发布网友
共1个回答
热心网友
#include<stdio.h>
main(void)
{ int a[9],n,t,i,temp1,temp2,c,d;
printf("请输入您所要输入的数字个数(须在2-9之间)\n");
scanf("%d",&n);
for(i=0; i<n; i++)
{ scanf("%d",&a[i]);
}
if(a[0]<a[1])
{ temp1=a[0];
a[0]=a[1];
a[1]=temp1;
}
while(a[0]%a[1]!=0)
{ c=a[0];
a[0]=a[1];
a[1]=c%a[1];
}
a[0]=a[1];
for(i=0; i<n; i++)
{ if(a[0]<a[i])
{ temp2=a[0];
a[0]=a[i];
a[i]=temp2;
}
while(a[0]%a[i]!=0)
{ d=a[0];
a[0]=a[i];
a[i]=d%a[i];
}
a[0]=a[i];
}
printf("您所输入的数字最大公约数为%d",a[0]);
}
追问的确是这样。。。为什么要要这句a[0]=a[i]? 绕晕了。。
追答
因为所求出的二个数的最大公约数,是在a[i],而不是a[0]。
其实这个程序可以大大简化;