你求的是最大公约数,在函数前面加上一个变量
int max = 1;
在if里面 max = i;
去掉else
在for循环后面输出print("%d", max);
需要看到代码才能确定问题出在哪里,但是可以给出一些常见的求最大公约数的方法:
辗转相除法
int gcd(int a, int b) {
while (b != 0) {
int temp = a % b;
a = b;
b = temp;
}
return a;
}
更相减损法
int gcd(int a, int b) {
if (a == b) return a;
if (a < b) return gcd(b, a);
return gcd(a - b, b);
}
位运算
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;
}
以上三种方法都是可以求出最大公约数的,具体使用哪一种方法取决于具体情况。