#include<stdio.h>voidtext11(void){int m, n;//输入的两个整数int z, t =1;//t为累乘值int i;//循环变量printf("输入两个数:");scanf("%d%d",&m,&n);if(m < n){//默认m大于n的值,方便后面计算
z = m;
m = n;
n = z;}for(i =2; i < n+1; i++){if((m%i==0)&&(n%i==0)){//判断是否还有公约数
m /= i;
n /= i;
t *= i;//约数累乘,得出最大公约数
i =1;//每次循环开始的变量初始化if(n ==1)break;//判断m和n是否为倍数关系}}if(((m%i !=0)||(n%i !=0))||n==1){//没有公约数或者小的值为1的时候开始运算取值printf("最大公约数为%d\n", t);
t = m * n * t;//约数累乘再乘上m和n的最终余数,得出最小公倍数printf("最小公倍数为%d\n", t);}}
方法二:取余除法
# include<stdio.h>int m, n, k, x, y;//m、n为输入值,k为交换m、n的中间变量,x表示最大公约数,y表示最大公倍数printf("输入两个整数:");scanf("%d%d",&m,&n);printf("%d和%d的\n",m , n);if(m < n){
k = n;
n = m;
m = k;}if(m % n !=0){
x = m % n;//两数求余除的结果就是最大公约数
y = m * n / x;//最小公倍数==(m/x)*(n/x)*x==(m*n)/x}if(m % n ==0){
x = n;
y = m;}printf("最大公约数为:%d\n最小公倍数为:%d", x, y);}