#include <stdio.h>
int MaxFactor(int m,int n) { // 最大公约数
int t;
if(n < m) { t = n;n = m;m = t; }
for(t = m;t > 0;t--) {
if(m % t == 0 && n % t == 0)
return t;
}
return 1; // 永远得不到执行。
}
int MinMulriple(int m,int n) { // 最小公倍数
int t;
if(m > n) { t = n;n = m;m = t; }
if(n % m == 0) return n;
for(t = n;t <= n * m;t++) {
if(t % m == 0 && t % n == 0)
return t;
}
return m * n; // 永远得不到执行。
}
int main() {
int m,n;
while(scanf("%d%d",&m,&n) == 2) {
printf("%d, %d 最大公约数为 : %d\n",m,n,MaxFactor(m,n));
printf("%d, %d 最小公倍数为 : %d\n",m,n,MinMulriple(m,n));
}
return 0;
}
追问我想要只是最小公倍数的怎么写啊,刚学这个完全看不懂,多谢
追答int MinMulriple(int m,int n) { // 最小公倍数
int t;
if(m > n) { t = n;n = m;m = t; } // 确保m < n
if(n % m == 0) return n; // 如果较大数能被较小数整除,较大数就是最小公倍数
for(t = n + 1;t <= n * m;t++) { // 从n + 1到 n * m中寻找最小公倍数
if(t % m == 0 && t % n == 0) // 判断是否都能被两个数整除
return t; // 能,则返回这个数,也就是最小公倍数
}
return m * n; // 永远得不到执行,之所以保留,是因为编译程序的需要。、
}