求两个整数的最大公约数

方法一:
质因数分解法:把几个数先分别分解质因数,再把各数中的全部公有的质因数和独有的质因数提取出来连乘,所得的积就是这几个数的最小公倍数 。
方法二:
短除法:先用这几个数的公约数连续去除,一直除到所有的商互质为止,然后把所有的除数连乘起来,所得的积就是这几个数的最大公约数 。
方法三:
辗转相除法:先求出其中任意两个数的最大公约数,再求这个最大公约数与第三个数的最大公约数,依次求下去,直到最后一个数为止 。最后所得的那个最大公约数,就是所有这c语言求两个数的最大公约数是多少?c语言求两个数的最大公约数的步骤如下:
1、首先,新建一个C语言源程序,在这里使用的是Visual C++60的软件 。
2、然后从键盘中直接输入两个正整数a和b 。
代码为:
printf("please input two number:n")
int a,b
scanf("%d%d",&a,&b)
3、然后取a,b这两个数中的较小值,存放到变量n中 。
代码为:
int n=a
if (n>b)
n=b
4、接着从两个数a和b中的较小数开始,依次逐个减小1,以便能寻找出可以整除a和b的整数 。第一个找到的整数就是整数a和b的最大公约数 。
代码:
for(int i=ni>=1i--)
{
if (a%i==0&&b%i==0)
{
printf("最大公约数:%d n",i)
break
}
}
5、最后点击工具栏上方的图标,之后源程序编译运行,即可对数据进行计算 。
以上就是c语言求两个数的最大公约数的步骤了 。
求两个正整数m和n的最大公约数求两个正整数的最大公约数的算法通常使用“辗转相除法” 。设有两个正整数m、n,求它们的最大公约数的算法如下:
①若m<n,则交换m和n(保证m大于n) 。
②计算m/n的余数r 。
③若r不等于0,则令m=n、n=r,转第②步继续执行;
否则,算法结束,n就是最大公约数 。
下面就是用“辗转相除法'才出并返回m、n最大公约数的函数fmn(),请填写清单中缺少的语句 。
int fmn( m, n)
int m,n;
{ int r;
if(m<n )
{r=m;m=n;n=r;}
if(n==0)
return(m);
do{_________________
if(r!= 0)
{ m=n; n=r;}
}while(r!=0);
return(n);
}
分析由于算法步骤已经给出,按照算法来理解程序就比较简单 。函数体开始的单分支语
句是确保m值是大于n值的 。接下来的单分支语句是确保算法中的除法“m/n”时的除数n不为0 。注意,如果一开始的n就是O,则两个最大公约数就是m,此处利用返回语句返回的函数值就是m 。接下来的do-while循环是实现算法步骤中的第②步和第③步的,显然该循环体中的第2条单分支语句是完成算法步骤中的第③步工作的,而空白处应该完成算法步骤中的第②步工作,即r等于m/n的余数 。
答案r=m%n;
说明求最大公约数和最小公倍数的算法是常用算法;但在教材中并没有给出,希望读者在
学有余力的情况下,能掌握这两个算法 。
求两个正整数的最小公倍数的算法在教材中也没有给出,下面给出求最小公倍数的一种算法 。设有两个正整数m、n,求它们的最小公倍数的算法如下:
①若m<n,则交换m和n(保证m大于n) 。
②令d=m 。
③若d能被n整除,则算法结束,d就是m和n的最小公倍数 。
否则,令d=d+m,转第③步,继续执行 。
实现算法的程序清单如下:
main()
{ int m,n,d ;
scanf("%d,%d",&m,&n);
if(m<n)
{ d=m;m=n;n=d;}
if(n==0)
d=0;
else
{ d=m;
while(d%n!=0)
d+=m;
}
printf(”%d\n”,d);
}
c语言编程:输入两个正整数,求最大公约数和最小公倍数#include&ltstdioh&gt
int main()
{
int p,r,n,m,temp
printf("请输入两个正整数n,m:")
scanf("%d,%d,",&n,&m)
if(n&ltm)
{
temp=n
n=m
m=temp
}
p=nm
while(m!=0)
{
r=n%m
n=m
m=r
}
printf("它们的最大公约数为:%dn",n)
printf("它们的最小公约数为:%dn",p/n)
return 0
}
方法二、//穷举法解两个数的最大公约数和最小公倍数
void exp(int num1,int num2){
int x,y,i
x=num1
y=num2
int max=0//最大公约数
for(i=1i&lt=num1i++)
if(num1%i==0&&num2%i==0)
max=i
Systemoutprintln("---------------------------------")
Systemoutprintln("利用穷举法计算所得最大公约数为:"+max)
Systemoutprintln("利用穷举法计算所得最小公倍数为:"+xy/max)//最小公倍数