编写一个c语言程序 求两个整数的最大公约数

作者&投稿:正朋 (若有异议请与网页底部的电邮联系)
~ 下面给出一个使用C语言实现求两个整数的最大公约数的示例代码:

```c
#include <stdio.h>

int gcd(int a, int b);

int main() {
int a, b, result;
printf("请输入两个整数:");
scanf("%d %d", &a, &b);
result = gcd(a, b);
printf("两个数的最大公约数为:%d", result);
return 0;
}

int gcd(int a, int b) {
if (a % b == 0) {
return b;
}
return gcd(b, a % b);
}
```

在上面的代码中,我们定义了一个`gcd`函数来求两个整数的最大公约数。`gcd`函数使用递归方式来实现辗转相除法求最大公约数。如果a能被b整除,则b就是两个整数的最大公约数。否则,我们就不断将b作为a,将a%b作为b,不断递归求解,直到b能够整除a。

在主函数中,我们首先使用`scanf`函数来读入两个整数,然后用`gcd`函数来求它们的最大公约数,最后输出结果。

需要注意的是,上面的代码中没有对输入的数据进行异常处理。如果用户输入的不是整数类型,程序可能会出现错误。因此,为了保证程序的健壮性,我们还需要添加一些异常处理代码来防止这种情况发生。


五指山市19881551429: 写一个函数,分别求两个整数的最大公约数,用主函数调用这个函数,并输出结果,两个整数由键盘输入.c语言编程题 -
孙顺蜜炼:[答案] #include #include void fun(int num1,int num2) { int temp; if(num1
五指山市19881551429: 用C语言编写函数求任意两个整数的最大公约数 -
孙顺蜜炼: JAVAer路过留思路.1.首先,当AB同时取余一个数为0时,该数为公约数.2.首先定义被取余的数,从哪里开始呢?当然是从AB最小的那个数开始.哪里结束呢?当然是取到公约数为止.然后被取余的数当然是大到小递减.看了其他答案,发现他的思路有点误区了,他没有用递减,用了递增,你参考他的代码,再参考我的思路,相信你能写出来.

五指山市19881551429: 求C语言程序:求两个整数的最大公约数和最小公倍数. -
孙顺蜜炼: #include int yue (int a,int b) { int i,y; for (i=b;i>=1;i--) if(a%i==0&&b%i==0) {y=i;break;} return y;}int bei (int a,int b ) {int y,i; for (i=a;i<=a*b;i++) if (i%a==0&&i%b==0) {y=i;break;} return y; } main() { int a,b,t; scanf("%d%d",&a,&b); if (a{t=a;a=b;b=t;} printf("yue=%d bei=%d",yue(a,b),bei(a,b));}

五指山市19881551429: C语言 输入任意两个整数,求输出其中最大的整数 怎么做 -
孙顺蜜炼: //你好,完整示例如下://--------------------------#include <stdio.h> int main() { int a, b; printf("请输入两个整数,用空格隔开:"); scanf("%d%d", &a, &b); //获取用户输入 printf("较大的数为:%d", a>b?a:b); //a>b?a:b为问号表达式,返回a,b中的较大数 return 0; }

五指山市19881551429: C语言:设计一个函数,求两个整数的最大公约数.要求:函数类型是int. 函数名自己取,函数形式为两个整数 -
孙顺蜜炼: int GC(int a,int b) { int r; if(a<b) { r=a; a=b; b=r; } r=a%b; while(r) //辗转相除 return b;//返回b,即为两者最大公约数 }

五指山市19881551429: C语言求两个整数的最大公约数程序 -
孙顺蜜炼: for后面的括号中需要用分号而不是逗号,请改

五指山市19881551429: 编程求两个整数的最大公约数和最小公倍数. -
孙顺蜜炼: #include int func1(int a,int b) { int r; while(b>0) { r=a%b; a=b; b=r; } return a; } int func2(int a,int b,int g) { return a*b/g; } int main() { int a,b,c,d; scanf("%d%d",&a,&b); c=func1(a,b);//最大公约数 d=func2(a,b,c);//最小公倍数 printf("%d\n%d\n",c,d); }

五指山市19881551429: c语言怎么求两个整数的最大公约数和最小公倍数' -
孙顺蜜炼: #include int main() { int p,r,n,m,temp; printf("请输入两个正整数n,m:"); scanf("%d%d,",&n,&m); if (n{ temp=n; n=m; m=temp; } p=n*m; while(m!=0) { r=n%m; n=m; m=r; } printf("它们的最大公约数为:%d\n",n); printf("它们的最小公约数为:%d\n",p/n); return 0; }

五指山市19881551429: c语言问题,求两个2整数,得最大值``` -
孙顺蜜炼: scanf 的输入 按照格式来.你这里是scanf("%d%d",&a,&b);所以你应该5空格6或者 5回车6, 然后再回车.如果两个%d中间有任何其他的特殊字符都是作为分隔符.陷阱:::最后一个%d后面不能有空格或者其他字符,否则你必须再输入一个参数,而这个参数是没有变量接收的一个参数.有人曾试过scanf("%d\n",&n);结果输入一个数据之后按回车,还在等待下一个输入~显然,下一个输入跟你这个求解是无关的.但是你必须要输入,因为\n是分隔符,scanf 的机制决定,虽然你后面没有变量接收第二个参数,但是它还是会以为有两个变量.所以,输入时一定要保证一致性!

五指山市19881551429: 用C语言编写一个求两个整数的最大公约数的程序,要求使用辗转相除法 -
孙顺蜜炼: #include <stdio.h> int main() { int a, b; scanf("%d%d", &a, &b); while (b!=0){ r = b; b = a; a = a % r; } printf("%d\n", a); return 0; }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网