不知道你采用的是哪种计算最大公约数的方法,不过这些常用的还是参考一下大佬的算法吧
while (a % b != 0) {//欧几里得算法求最大公约数
a = a % b;
b = b % a;
if (b)//若b不为0
greatestCommonDivisor = b;
else {
greatestCommonDivisor = a;
break;
}
int gcd_array(int num[], int size){
int g,j, max, flag = 1, k;
max = 0;
for(k = 0; k < size; k++){
if (num[k] > max)
{
max = k;
}
}
for (j = num[max]; j >= 0; j --)
{
flag = 1;
for (k = 0; k < size; k++)
{
if (num[k] % j != 0)
{
flag = 0;
break;
}
}
if (flag == 1)
{
g = j;
break;
}
}
return g;
}
#include<stdio.h>
int main(){
int N, num[1000], gcd, i, size;
scanf("%d", &N);
size = N;
for (i = 0; i < N; i++)
{
scanf("%d", &num[i]);
}
gcd = gcd_array(num, size);
printf("%d\n", gcd);
return 0;
}
运行结果: