//编写一个函数,传入a,b两个int类型的变量,返回两个值的最大公约数。
//例如:输入传入(0 , 5)函数返回5,传入(10 , 9)函数返回1,传入(12 , 4)函数返回4
#include<stdio.h>
int func1(int a,int b)//辗转相除法
{
int temp = 0;
while(b)
{
temp = a % b;
a = b;
b = temp;
}
return a;
}
int gcd(int a, int b)//更相减损术
{
while(a != b)
{
if(a > b)
a -= b;
else
b -= a;
}
return a;
}
int func2(int a,int b)//Stein算法
{
while(a!=b)
{
if(a%2!=0)
{
a /= 2;
}
if(b%2!=0)
{
b /= 2;
}
if(a > b)
a -= b;
else
b -= a;
}
return a;
}
int main()
{
int ret = func1(100000000000,600000000);
printf("%d\n",ret);
//printf("%d\n",gcd(1000000000,600000000000));
printf("%d\n",func2(100000000000,600000000));
printf("%d\n",gcd(100000000000,600000000));
return 0;
}
求最大公约数
最新推荐文章于 2022-07-23 00:12:28 发布