最大公约数&最小公倍数算法

来源:互联网 发布:淘宝店茶叶招牌 编辑:程序博客网 时间:2024/05/14 11:34

最大公约数:采用辗转相除法。(递归和非递归两种方法实现)

最小公倍数:两数相乘/最大公约数


详见代码。

#include <iostream>#include <cstdio>using namespace std;int gcd1(int a,int b)// 递归算法{    if (b==0)        return a;    return gcd1(b,a%b);}int gcd2(int a,int b) //非递归算法(辗转相除法){    if (a<b)        swap(a,b);    while (b!=0)    {        int cmp=a%b;        a=b;        b=cmp;    }    return a;}int main(){    int n,m,ans1,ans2;    while (~scanf ("%d%d",&n,&m))    {        ans1=gcd1(n,m);        ans2=gcd2(n,m);        printf ("%d %d\n",ans1,ans2);    }    return 0;}

最小公倍数的算法实现。

int lcm(int a,int b){    return a*b/gcd(a,b);}

分解质因子的算法实现。

int num[80000];void f(int n)  //分解质因子{    int k=0,t=n;    for(int i=2;i*i<=t;i++)    {        while(n%i==0)        {            num[k++]=i;            n/=i;        }    }}


0 0
原创粉丝点击