永发信息网

C语言题目:写一个函数,用欧几里德辗转相除法求两个整数的最大公约数

答案:3  悬赏:70  手机版
解决时间 2021-03-28 14:32
  • 提问者网友:回忆在搜索
  • 2021-03-28 05:45
C语言题目:写一个函数,用欧几里德辗转相除法求两个整数的最大公约数
最佳答案
  • 五星知识达人网友:野味小生
  • 2021-03-28 07:22
你的程序中,如果一个数是另一个数的倍数的话,那么d不会被赋值,这是输出的d的值是不可预知的,可将d的值初始化为较小数的值。其次,你的func函数没有返回值。

#include
#include

int num,arr[100];

int get_max(int a,int b)
{
int x,y,ans1,ans2;
x=a;y=b;
while(x%y)
{
ans1=x%y;
ans2=ans1-y;
x=y;
if(ans1<(-ans2))
y=ans1;
else
y=-ans2;
}
return y;
}

int main()
{
int ans;
printf("请输入整数的个数:");
scanf("%d",&num);
if(num<2||num>100)
{
printf("非法输入!\n");
exit(1);
}
for(int i=0;i scanf("%d",&arr[i]);
ans=get_max(arr[0],arr[1]);
for(i=2;i ans=get_max(ans,arr[i]);
printf("(%d",arr[0]);
for(i=1;i printf(",%d",arr[i]);
printf(")=%d\n",ans);
return 0;
}
全部回答
  • 1楼网友:廢物販賣機
  • 2021-03-28 08:45
#include
int func(int a,int b);
int main(void){
int i,j;
scanf("%d%d",&i,&j);
func(i,j);
return 0;
}
int func(int a,int b) {
int i,j,c;
if(a>b) i=a,j=b;
else i=b,j=a;
c=i%j;
while(c!=0){
i=j;
j=c;
c=i%j;
}
printf("%d",j);
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯