输入正整数m和n,求其最大公约数和最小公倍数
#include<stdio.h>
int main()
{
int a,b,m,n,i;
printf("请输入正整数m和n:");
scanf("%d %d",&m,&n);
a=m;
b=n;
if(m<n)
{
i=m;
m=n;
n=i;
}
for(i=m%n;i!=0;) //辗转循环法
{
m=n;
n=i;
i=m%n;
}
printf("%d和%d的最大公约数是%d,最小公倍数是%d",a,b,n,(a+b)/n);
}
思路:
- 首先判断输入的正整数m>n,若不是则找中间变量将m、n值互换
- 运用辗转相除法,将m%n的值赋给i,判断i是否为0,若是,则n就是最大公约数;否则进入for循环,将n的值赋给m,i的值给n,m%n的值给i进行不断循环,最后i值为0时的n就是最大公约数
- 最小公倍数的求法就是将输入的m,n值相乘除最大公约数