题目描述:
求两个整数m和n的最大公约数.
题目解析:
从最小的那个整数开始,用x表示,如果x能同时被m和n整除,则找到,否则试探x-1.
参考程序:
#include"stdio.h"
int gcd(int m,int n)
{
int x=m;
if(x>n) x=n;
while(1)
{
if(m%x==0 && n%x==0)
return x;
else
x--;
}
}
int main(void)
{
int x,y,gcd2;
x=48;y=32;
gcd2=gcd(x,y);
printf("%d\n",gcd2);
x=24;y=48;
gcd2=gcd(x,y);
printf("%d\n",gcd2);
return 0;
}
随想:
中学时,求m、n的最大公约数,采取的是找寻m、n的公共素数约数的方法。
在当时,一般学生的思维能力还欠缺,讲辗转相除法,肯定大批的人懵逼。
讲上面这个方法,对于m、n都比较大时,计算速度慢,
因此找公共素数反而是一个折衷的办法。
人的发展是需要一个过程的,其思维成熟也需要一个过程,
因此有人小时了了,大未必佳,
也有人大器晚成。
人生在世,其实活的是一个过程。
人生路上多风景,慢慢走,欣赏啊。