题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
程序分析:
(1)最小公倍数 =输入的两个数之积除于它们的最大公约数数
(2)最大公约数利用辗除法(辗转相除法)。
假设m>n,用m%n,得到余数;
余数赋值给n,n赋值给m;
循环操作m%n取余。
代码:
#include<stdio.h>
int main(){
int m;
int n;
int temp;//引入临时变量,取余时需要
int num1;//后面用于定义m和n,求最小公倍数需要
int num2;
scanf("%d %d",&m,&n);
num1 = m;
num2 = n;
if(num1 >= num2){
while(n != 0){
temp = m % n;//大数除以小数,得到余数
m = n;
n = temp;//余数变成除数
}
printf("最大公约数:%d\n最小公倍数:%d",m,num1 * num2 / m);
}
else if(num1 < num2){
while(m != 0){
temp = n % m;
n = m;
m = temp;
}
printf("最大公约数:%d\n最小公倍数:%d",n,num1 * num2 / n);
}
return 0;
}