用c#求两个整数的最大公约数,我想了很久就是无法实现其功能,谢谢!

来源:百度知道 编辑:UC知道 时间:2024/06/07 18:24:10

求最大公约数的算法如下: a, b 两个数, 假如 a >= b,如果不是,交换一下就行。

1. 如果 a == b, 则 a 就是最大公约数。
2. a 对 b 求余, 即 temp = b; b = a % b; a = temp;
3. 返回第一步叛断。

int num1 = 9,
num2 = 15;
int max = num1 < num2 ? num1 : num2;//取最小的
for (int i = max; i > 0; i--)
if (num1 % i == 0 && num2 % i == 0)
{
Console.WriteLine(i);
break;
}

应该都要是正整数吧
你这样写就好
有个辗转法,就和上面的提供的算法一样
具体你自己尝试吧

来个简洁的
int Euclid(int a,int b)
{
if(b==0) return a;
return Euclid(b,a%b);
}

最笨的法子
int a=100;
int b=40;
for(int j=a+b;j>1;j--)
{
if(a%j==0&&b%j==0)
{
return j;
}
}

我们刚学的,呵呵
可用“辗转相除法”求,算法如下:
1)求出m除以n的余数,存放在变量r中;
2)若余数r为0则执行步骤6,否则执行步骤3;
3)把除数作为新的被除数,把余数作为新的除数;
4)求出新的余数r;
5)重复步骤2到4;
6)输出n,n即为最大公约数。

main()
{
int m,n,r;
printf("Please enter m,n:");
scanf(&