PTA 7-443 sdut-C语言实验-最大公约数与最小公倍数
分数 12
作者 马新娟
单位 山东理工大学
求两个正整数的最大公约数与最小公倍数。
输入格式:
输入在一行中给出两个正整数M和N(≤1000)。
输出格式:
第一行输出最大公约数;
第二行输出最小公倍数。
输入样例:
9 21
输出样例:
3
63
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include <stdio.h>
int main(){
int m, n, min, max, minNumb, maxNumb;
scanf("%d %d", &m, &n);
minNumb = m < n ? m : n; //找出较小的数
maxNumb = m > n ? m : n; //找出较大的数
for(int i = 1; i <= minNumb; i++){ //循环1到较小数范围内的数
if(maxNumb % i == 0 && minNumb % i == 0){ //能被同时整除
max = i; //最大公约数
}
}
min = m * n / max; //最小公倍数
printf("%d\n%d", max, min);
return 0;
}
解题思路:
step1:寻找两个整数的较大和较小值
step2:用for寻找能同时整除两个整数的值(最大公因数)
step3:整数1 * 整数2 = 最小公倍数 * 最大公因数
step4:求最小公倍数
step5:输出
归属知识点:
循环结构