求两个数的最大公约数用到辗转相除法
若要求m,n两数的最大公约数和最小公倍数,可以用以下思路:
temp=m%n;
m=n;
n=temp;
前提是n!=0,然后返回m的值,m即为两个数的最大公约数,最小公倍数为:m*n/最大公约数
#include <stdio.h>
int division(int m,int n){
while (n != 0) {
int temp = m % n;
m = n;
n = temp;
}
return m;//m即为要求的最大公约数
}
int main(int argc, const char * argv[]) {
int m,n;
printf("请输入第一个数m\n");
scanf("%d",&m);
printf("请输入第二个数n\n");
scanf("%d",&n);
int res = division(m,n);//调用求最小公倍数的函数定义一个变量用来接收返回的n的值
int res2 = m * n / res;//最小公倍数是两个数相乘除以最大公倍数
printf("最大公约数是:%d,最小公倍数是:%d\n",res,res2);
return 0;
}
以下为运行结果示例图: