本题要求两个给定正整数的最大公约数和最小公倍数。
输入格式:
输入在一行中给出两个正整数M和N(≤1000)。
输出格式:
在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。
输入样例:
511 292
输出样例:
73 2044
暴力破解最大公约数,和最小公倍数
#include<stdio.h>
#include<math.h>
int mathj (int m,int n);
int main()
{
int m,n;
int i;
int min=1,max1=1,max2=1,max=1;
scanf ("%d %d",&m,&n);
int cun,flag1=0,flag2=0,x,y;
cun=m;x=m,y=n;
if (m>n)
cun=n;
for (i=2;i<=cun;i++) {
if (m%i==0&&n%i==0)
{ min=i;
while((x%i==0)&&(y%i==0))
{
x=x/i;
y=y/i;
max2*=i;
}
// 求出m,n中共同拥有的因子之积;例:20=2*2*5;40=2*2*5*2;------>max2=2*2*5;遇到多个重
//复因子,while来保证m,n中的共有因子不存在时,才跳出
//
}
}
max=m*n/max2;
printf("%d %d",min,max);
return 0;
}