c语言求出2个正整数的最大公约数(解释一下好吗)

如题所述

首先要了解最大公约数的算法,就是拿相对较大的数除小的数,直到除到没有余数为止。
比方 15和25
先拿 25/15 余数 10
再拿 15/10 余数 5
接着 10/5 余数 0
则5就是最大公约数,了解了怎么算法,下面来解释过程。
include "stdio.h"
void main()
{
int a,b,r,t;
scanf("%d%d",&a,&b);
if(a<b) //下面{}里是将较大值做转换
{
t=a;
a=b;
b=t;
}
r=a%b; //给r赋值
while(r!=0) //当r非0则执行
{
r=a%b; //相除得余数,再赋值给r
a=b; //然后再把b值赋给a,做为较大值。
b=r; //再将r余数赋给b (如果余数大于被除数或者被正好整除,那么下一循环就检测到r=0则结束循环。)
}
printf("%d\n",b); //输出b
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2007-12-22
#include<stdio.h>
main()
{int m,n,t,r;
scanf("%d,%d",&m,&n);
if(m<n)
{t=m;m=n;n=t;}
r=m%n;
while(r!=0)
{m=n;
n=r;
r=m%n;
}
printf("The largest common divisor is %d",n);
}
第2个回答  2007-12-22
#include "stdio.h"
void main()
{
int a,b,r,t;
scanf("%d%d",&a,&b);
if(a<b)
{
t=a;
a=b;
b=t;
}
r=a%b; //这里要给r赋值为a%b
while(r!=0) //查r的值,若r为0,则改变了的b的值为最小公倍数
{
a=b;
b=r;
r=a%b;
}
printf("%d\n",b);
}
这程序应该能看懂
第3个回答  2007-12-22
int gcd(int a, int b)
{
if(b==0) return a;
else return gcd(b, a%b);
}
这个是辗转相除的递归写法。
具体的 算法解释 百度一下 有很多 解答。

c语言求出2个正整数的最大公约数(解释一下好吗)
首先要了解最大公约数的算法,就是拿相对较大的数除小的数,直到除到没有余数为止。比方 15和25 先拿 25\/15 余数 10 再拿 15\/10 余数 5 接着 10\/5 余数 0 则5就是最大公约数,了解了怎么算法,下面来解释过程。include "stdio.h"void main(){ int a,b,r,t;scanf("%d%d",&a...

【C语言程序设计】C语言求最大公约数(详解版)!
在C语言程序设计中,要解决的问题是找到任意两个正整数的最大公约数(GCD)。这个概念基于约数的定义,即一个数的约数不会大于它本身,而几个数的最大公约数不会大于其中的任何一个数。求最大公约数的目标是找到一个既能同时整除这两个数,且是最小的这样的自然数。有两种算法设计方法:穷举法和从...

如何用C语言实现求两个正整数的最大公约数?
首先,打开你的C语言编程环境,比如Visual C++6.0,准备编写一段奇妙的代码。在程序的初始阶段,敲击键盘,输入两个待求公约数的正整数a和b。<\/ 为了简化计算,我们需要找到这两个数中的较小值,将其存储在变量n中,这样可以提高效率。接下来,从这个较小数n开始,逐次减1,寻找能同时整除a和b的整...

计算两个正整数的最大公约数c语言
printf("请输入两个正整数:");scanf("%d %d", &num1, &num2);result = gcd(num1, num2);printf("最大公约数为:%d\\n", result);return 0;} 计算两个正整数的最大公约数(Greatest Common Divisor,简称GCD)是数学中的一个经典问题。在C语言中,可以使用欧几里得算法(也称为辗转相除法...

编写一个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...

用C语言求最大公约数。
结论:在C语言中,我们可以通过简单的算法来计算两个正整数的最大公约数。以下是实现步骤:首先,创建一个C源程序,比如使用Visual C++ 6.0编译器。在程序中,你需要让用户输入两个正整数a和b。为了效率,先确定这两个数中的较小值,并将其存储在变量n中。接着,从n开始,逐次减小1,检查这个减小...

C语言编程如何实现求两个整数的最大公约数?
在C语言中,可以使用欧几里得算法(辗转相除法)来求解两个整数的最大公约数(GCD)。该算法的基本思想是:用较大的数除以较小的数,将得到的余数作为新的被除数,原来的除数作为新的除数,继续进行相同的操作,直到余数为0,此时最后的除数就是最大公约数。以下是C语言实现求两个整数的最大公约数的...

C语言编写程序计算两个正整数的最大公约数
DEV-CPP 5.4 C语言环境,通过编译运行 include<stdio.h>int max(int a,int b){ \/\/求最大公约数的函数 int i,k; for(i=1;i<=(a>b?b:a);i++) if(a%i==0&&b%i==0) k=i; return k;}int main(){ int a,b; scanf("%d%d",&a,&b); print...

c语言求最大公约数
在C语言编程中,要实现求两个正整数的最大公约数(GCD),可以通过简单的算法来完成。首先,创建一个C源程序,比如在Visual C++6.0环境下操作。程序的核心步骤如下:1. 从用户处获取两个正整数a和b的输入值。为了简化操作,选择其中较小的数n,将其存储起来。2. 从n开始,逐次减小1,检查这个数...

c语言求两个数的最大公约数
printf("最大公约数为:%d\\n", n);return 0;} 方法二:include<stdio.h> include<windows.h> pragma warning(disable:4996)int main(){ \/\/更相减损法 int a = 0;int b = 0;printf("请输出两个整数:");scanf("%d%d", &a, &b);while ((a - b)!=0){ if (a > b){ a =...

相似回答