求c中gcd的欧氏程序

求c中gcd的欧氏程序,c,security,number-theory,C,Security,Number Theory,我想用c语言执行欧几里德程序,但得到的答案不正确。我准备了以下代码来查找gcd #include<stdio.h> #include<conio.h> int gcd(int r1,int r2) { int r; r=r1%r2; while(r>0) { return gcd(r2,r); } return r2; } void main() { int a,b,ans; clrscr(); printf("enter value of a"); scanf("

我想用c语言执行欧几里德程序,但得到的答案不正确。我准备了以下代码来查找gcd

#include<stdio.h>
#include<conio.h>
int gcd(int r1,int r2)
{
int r;
r=r1%r2;
while(r>0)
{
return gcd(r2,r);
}
return r2;
}
void main()
{
int a,b,ans;
clrscr();
printf("enter value of a");
scanf("%d",&a);
printf("enter value of b");
scanf("%d",&b);
ans=gcd(a,b);
printf("%d",ans);
getch();
}
#包括
#包括
整数gcd(整数r1,整数r2)
{
INTR;
r=r1%r2;
而(r>0)
{
返回gcd(r2,r);
}
返回r2;
}
void main()
{
INTA,b,ans;
clrsc();
printf(“输入a的值”);
scanf(“%d”和“&a”);
printf(“输入b的值”);
scanf(“%d”和“b”);
ans=gcd(a,b);
printf(“%d”,ans);
getch();
}

此函数调用的C代码不正确。

main
应返回
int
。如果其中一个数字为0或负数,则会出现问题。你到底面临什么问题?问题解决了…这是一个愚蠢的错误。您仍然应该修复我提到的问题。
而(r>0){返回gcd(r2,r);
是胡说八道。@saumyaraj欢迎您!
int a;

...

scanf("%d",a);