习题4-7 最大公约数和最小公倍数 (15分)
本题要求两个给定正整数的最大公约数和最小公倍数。
输入格式:
输入在一行中给出两个正整数M和N(≤1000)。
输出格式:
在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。
输入样例:
511 292
输出样例:
73 2044
先找出最大值和最小值,max,min。
最大公约数:
最大公约数的定义为:m和n都对x这个数取余得的结果为0
采用for循环将1到min的所有数都试了一遍,最后输出x就是最大的公约数
最小公倍数:
采用for循环将x第一次取余min和max为0的数都找出,最后输出的x就是最大的公约数
#include <stdio.h>
int main()
{
int M, N,max=0,min=0,factor=0,i;
scanf("%d %d", &M, &N);
max = M>N? M:N;
min = M<N? M:N;
for( i=1; i<=min; i++ ){
if( max%i==0&&min%i==0 ){
if( factor<i ){
factor = i;
}
}
}
for( i=min; ;i++ ){
if( i%min==0&&i%max==0 ){
printf("%d %d", factor, i);
break;
}
}
return 0;
}
提交结果