习题4-7 最大公约数和最小公倍数 (15 分)
本题要求两个给定正整数的最大公约数和最小公倍数。
输入格式:
输入在一行中给出两个正整数M和N(≤1000)。
输出格式:
在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。
输入样例:
511 292
输出样例:
73 2044
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
/*计算方法:
最大公约数:
定义一个变量n
输入两个值,比较大小,用大的数取余小的数 a=max;b=min;a%b
判断取余是否为零,若为零,则max=小的数。
若不为零,
取余数
n=min; 依次往前挪位,a=原本的b,b=余数 (循环)
最小公倍数:
两因数相乘除以最大公因数
*/
int main()
{
int gy=0,gb=0,a,t,b;
int x,y;
scanf("%d %d",&x,&y) ;
a=x;b=y;
if(a<b){
t=b;
b=a;
a=t;
}
//计算最大公约数
if(a%b==0)
{
gy=b,gb=a;
}else{
while (a%b!=0){
t=a%b;
a=b;
b=t;
}
gy=b;
}
//计算最小公倍数
a=x;b=y;
if(a%b==0)
{
gb=a;
}else{
gb=a*b/gy;
}
printf("%d %d",gy,gb);
return 0;
}
版权声明:本文为m0_56566228原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。