c语言。枚举法求最大公约数,运行后得不到正确答案,请问是哪里的问题,该如何解决?
/*【枚举法求最大公约数】
1、设t为2
2、如果u和v都能被t整除,则记下这个t
3、t=t+1后重复第二步,直到t等于v或u
4、直到第四步成立,此时的t就是gcd(最大公约数)
*/
#include
int main()
{
int t = 2,gcd;
int u,v;
printf("请输入两个数:");
scanf("%d%d",&u,&v);
if(u % t != 0||v % t != 0)
{
t += t;
}
else
gcd = t;
printf("最大公约数为%d",gcd);
return 0;
}
基本的算法框架要正确, 你的 if 语句,要改为 while() 语句,循环让 t 不断变大,变大的过程中,不断测试 t 是否是两个输入数字的约数,如果是, 就赋值给 gcd
注解中的第三步中说有重复使用某段代码,但是程序中并没有出现for循环或者while循环,所以就得不到需要的结果啊
说好了是枚举法,你总要有个循环遍历的过程啊