给定两个数 m , n
#include<stdio.h>
int main ()
{
int m,n,r;
printf("请输入m,n\nm为被除数,n为除数\n");
scanf("%d%d",&m,&n);//又出现乌龙事件了!!忘加 & 了
while(r=m%n)//因为在C语言中当 m%n为 0,循环将会结束
{
m=n;
n=r;
}
printf("%d\n",n);
return 0;
}
给大家说一下这个吧!
它是有技巧的辗转相除法,如果你没听说过的话,呢说明你小学数学一定没学好(哈哈哈,其实我也没学过)
就是让被除数除以除数如果能除尽,就说明除数是最大公约数,就直接打印除数。如果除不尽,就让除后的余数当作除数,之前的除数当作被除数,如果余数为0,则这个除数就是最大公约数。如果不为0,呢就一直循环上一步,一直直到没有余数为止。
哎,是不是不太明白为啥,是不是感觉有点扯,如果你也是这样想的(不排除有小学学的特别好的),不要怀疑记住就行,我试过,是对的,嘿嘿嘿
现在来个题外话,为什么刚刚出现了乌龙------
scanf输入一个整数时,数组之前不加取地址符&,其他的要加。刚刚我就忘记加取地址符了,这样是出不来答案的