求最大公约数的?
#include <stdio.h>
void main()
{
int a,b,r;
printf("请输入a和b:");
scanf("%d%d",&a,&b);
while(b!=0)
{
r=a%b;
a=b;
b=r;
}
printf("%d",r);
}
求最大公约数的?
#include <stdio.h>
void main()
{
int a,b,r;
printf("请输入a和b:");
scanf("%d%d",&a,&b);
while(b!=0)
{
r=a%b;
a=b;
b=r;
}
printf("%d",r);
}
这个是辗转相除法
可以参考baidu百科的解释: http://baike.baidu.com/view/255668.htm?fr=ala0
while(b!=0) { r=a%b; a=b; b=r; } 举个例子说明:
如:a,b,输入的是6和8 也就是a=6,b=8;
r=6%8=6; a=b=8; b=r=6; b不为0再 循环:
r=8%6=2; a=b=6; b=r=2 b不为0再 循环:
r=6%2=0; a=b=2;b=r=0; b=0,循环结束 ,此时的r的值就是两个数的最大公约数