最大公约数*最小公倍数=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);
}