描述
输入两个整数m和n,输出他们的最大公约数和最小公倍数
输入
输入只有一行,包含两个数m和n,用空格分开。1<=m,n<=10^9。
输出
输出他们的最大公约数和最小公倍数,用一个空格分开。
样例输入
4 6
样例输出
2 12
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
long long int m,n,r,bm,bn;
scanf("%ld%ld",&m,&n);
bm=m;bn=n;//保存m,n
r=m%n;
while(r)
{
m=n;
n=r;
r=m%n;
}//求最大公约数n
printf("%ld %ld",n,bm*bn/n);//最大公约数*最小公倍数=两数乘积
return 0;
}
例如:
m n r
4 6 4
6 4 2
4 2 0
求最大公约数的另一种方法:
#include <stdio.h>
#include <stdbool.h>//使用bool的头文件
#include <math.h>
int main(int argc, char *argv[]) {
int m,n,i;
bool found=false;
scanf("%d%d",&m,&n);
for(i=(m>n?n:m);i>=1&&!found;i--)
if(m%i==0&&n%i==0)
{
printf("%d",i);
found=true;
}
return 0;
}