您的位置:首页 > 其它

最小公倍数和最大公约数的求解

2015-04-29 21:51 204 查看
最大公约数*最小公倍数=a*b;

①辗转相除法(又叫欧几里得算法,是一种求两个正整数的最大公约数的古老有效的算法。)

1.输入两整数a和b。

2.a%b得余数r

3.如果r=0,则b为两数的最大公约数。

4.如果r≠0,则另a=b,b=r,再从第二步执行。

5.直到r=0,此时b为两数的最大公约数。

#include<stdio.h>
#include<math.h>

void main(){
int a,b;
scanf("%d %d",&a,&b);
int m,n;
m=a;
n=b;
int r=a%b;
while(r!=0)
{
a=b;
b=r;
r=a%b;
}
printf("%d和%d的最大公约数为:%d\n",m,n,b);
printf("%d和%d的最小公倍数为:%d\n",m,n,m*n/b);
}


②更相减损术(我国古代数学专著《九章算术》中介绍的一种求两个最大公约数的算法)

有两整数a和b:

1. 若a>b,则a=a-b

2. 若a

#include<stdio.h>
#include<math.h>
void main(){
int a,b;
scanf("%d %d",&a,&b);
int m,n;
m=a;
n=b;
while(a!=b)
{
if(a>b)
a=a-b;
else
b=b-a;
}
printf("%d和%d的最大公约数为:%d\n",m,n,a);
printf("%d和%d的最小公倍数为:%d\n",m,n,m*n/a);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: