为什么代码这样写求不出最大公约数?(编译没问题)

该问题来自社区帖: https://bbs.csdn.net/topics/614566754

 

 

你求的是最大公约数,在函数前面加上一个变量
int max = 1;
在if里面 max = i;
去掉else
在for循环后面输出print("%d", max);

以下内容部分参考ChatGPT模型:


需要看到代码才能确定问题出在哪里,但是可以给出一些常见的求最大公约数的方法:

  1. 辗转相除法

    int gcd(int a, int b) {
        while (b != 0) {
            int temp = a % b;
            a = b;
            b = temp;
        }
        return a;
    }
    
  2. 更相减损法

    int gcd(int a, int b) {
        if (a == b) return a;
        if (a < b) return gcd(b, a);
        return gcd(a - b, b);
    }
    
  3. 位运算

    int gcd(int a, int b) {
        if (a == 0) return b;
        if (b == 0) return a;
        int k;
        for (k = 0; ((a | b) & 1) == 0; k++) {
            a >>= 1;
            b >>= 1;
        }
        while ((a & 1) == 0) a >>= 1;
        do {
            while ((b & 1) == 0) b >>= 1;
            if (a > b) {
                int temp = a;
                a = b;
                b = temp;
            }
            b = b - a;
        } while (b != 0);
        return a << k;
    }
    

以上三种方法都是可以求出最大公约数的,具体使用哪一种方法取决于具体情况。


如果我的建议对您有帮助、请点击采纳、祝您生活愉快