c语言。枚举法求最大公约数,运行后得不到正确答案

c语言。枚举法求最大公约数,运行后得不到正确答案,请问是哪里的问题,该如何解决?


/*【枚举法求最大公约数】
1、设t2
2、如果u和v都能被t整除,则记下这个t
3t=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;
}

img

基本的算法框架要正确, 你的 if 语句,要改为 while() 语句,循环让 t 不断变大,变大的过程中,不断测试 t 是否是两个输入数字的约数,如果是, 就赋值给 gcd

注解中的第三步中说有重复使用某段代码,但是程序中并没有出现for循环或者while循环,所以就得不到需要的结果啊

说好了是枚举法,你总要有个循环遍历的过程啊