输入两个正整数m和n,求其最小公倍数 C语言程序设计

谢啦

#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; // 永远得不到执行,之所以保留,是因为编译程序的需要。、
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-10-27
#include<stdio.h>
void main()
{
int m,n,i,,max;
scanf("%d%d",&m,&n);//求其最大公倍数和最小公倍数
max=(m>n)?m:n;
for(i=max;i<=m*n;i++)
if(i%m==0&&i%n==0) break;
printf("最小公倍数:%d",i);
return 0;
}
第2个回答  2018-03-31

#include"stdio.h"
main()
{
int m,n,t,h,a,b,q;
printf("("%d%d",a=m;
b=n
{ h=n;n=m%n;m=n;}
a=a/n;b=b/n;q公约数为 %d,最小公倍数

本回答被网友采纳
第3个回答  2015-01-02
#include"stdio.h"
main()
{
int m,n,i,j,k,g,t;
scanf("%d%d",&m,&n);
if(m<=n)
{
k=m;
m=n;
n=k;
}
for(i=n;i>=0;i--)
{
if((m%i==0)&&(n%i==0))
{
g=i;
break;
}
}
for(j=m;;j++)
{
if((j%m==0)&&(j%n==0))
{
t=j;
break;
}

}
printf("%d,%d",g,t);
}
第4个回答  2018-03-13
#include<stdio.h>
main(void)
{int m,n,lcm;
printf("Input two positive intergers:");
scanf("%d%d",&m,&n);
if(m<n)
lcm=n;
else
lcm=m;
while(lcm%m!=0 || lcm%n!=0)
lcm++;
printf("lcm=%d\n",lcm);
return 0;
}
相似回答