用C语言编写程序,输入两个整数,输出其最大公约数和最小公倍数。

如题所述

#include <stdio.h>

int main (void)
{
int m, n, p, tmp;

printf ("Please type in two number:\n");
scanf ("%i %i", &m, &n); //输入两个数,分别放入m, n
p=m*n; //先把两数的积算出来,后面m和n的值会有变

while (n!=0){
tmp=m%n;
m=n;
n=tmp; //这段是求最大公约数的算法
}

printf ("The GCD is %i\n", m); //上面的算法n=0时m这时的值就是最大公约数
printf ("The LCM is %i\n", p/m);//两数的积除以最大公约数就是最小公倍数了

return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-04-14
#include <stdio.h>

int gcd(int n, int m);
int gcd2(int n, int m);
int lcm(int n, int m);

/* 利用辗转相除法求最大公约数 */
/* 这里利用递归实现 */
int main()
{
int n, m;
printf("请输入两个整数:");
scanf("%d%d", &n, &m);
printf("%d %d 最小公倍数是:%d\n", n, m, lcm(n, m));
return 1;
}

int gcd(int n, int m)
{
return n % m == 0 ? m : gcd(m, n % m);
}

/* 这里利用循环实现 */
int gcd2(int n, int m)
{
int r;
while(r = n % m) {
n = m;
m = r;
}
return m;
}

/* 最小公倍数 */
int lcm(int n, int m)
{
if(n == 0 || m == 0) {
printf("输入不可为0\n");
}
return n / gcd2(n, m) * m; /* 这个地方调用最大公约数 */
}
第2个回答  2022-12-01

举例:输入两个正整数m和n,输出它们的最小公倍数和最大公约数。

代码:

#include <stdio.h>

int main(void)

{

int gcd, lcm, m, n;

int repeat, ri;

scanf("%d", &repeat);

for(ri = 1; ri <= repeat; ri++)

{

scanf("%d", &m);

scanf("%d", &n);

if(m <= 0 || n <= 0)

{  printf("m <= 0 or n <= 0");

continue;

}

for(gcd=m; gcd >= 1; gcd--){

if(m % gcd == 0 && n % gcd == 0) break;

}

lcm = m * n / gcd;

printf("%d, %d\n",lcm, m, n, gcd, m, n);

}

}

运行效果:

输入输出示例:括号内为说明

输入:

3(repeat=3)

37(m=3,n=7)

244(m=24,n=4)

2418(m=24,n=18)

输出:

21,1.

24,4.

72,6.

扩展资料:

辗转相除法:

#include <stdio.h>

int main()

{

int m,n;

scanf("%d %d",&a,&b);  //输入两个整数

int num1,num2,c; //num1,num2作为计算时的变量,c作为中间变量

if(a>=b)  {num1=a; num2=b; }

else      {num1=b; num2=a; }//通过比较对num1和num2赋值,便于计算

while(num2>0){

c=num1%num2;

num1=num2;

num2=c;}//辗转相除,num2=0时,num1=最大公因数

printf("最大公因数:%d\n",num1);

printf("最小公倍数:%d\n"m*n/num1);

return 0;

}

用c语言编程输入两个整数,求其最大公约数和最小公倍数
include"stdio.h"main(){ int m,n,t,h,a,b,q;printf("输入m,n的值:");scanf("%d%d",&m,&n);a=m;b=n;if (n>m) {t=m;m=n;n=t;}while (m%n!=0){ h=n;n=m%n;m=n;}a=a\/n;b=b\/n;q=a*b*n;printf("两数最大公约数为 %d,最小公倍数为 %d\\n",n...

C语言编程:输入两个正整数,输出其中最大公约数和最小公倍数。
}

c语言编程:输入两个正整数,求最大公约数和最小公倍数
printf("它们的最小公约数为:%d\\n",p\/n);return 0;} 方法二、\/\/穷举法解两个数的最大公约数和最小公倍数 void exp(int num1,int num2){ int x,y,i;x=num1;y=num2;int max=0;\/\/最大公约数 for(i=1;i<=num1;i++)if(num1%i==0&&num2%i==0)max=i;System.out.println(...

用C程序编写:输出两个正整数m和n,求其最大公约数和最小公倍数。
我给楼主说下思路:先输入两个整数,然后判断两数的大小,用大的数对小的取模,然后小的数自减直到余数为0,这个时候小的数就是两数的最大公约数,然后将输入的两个数相乘再除以做大公约数,得到的结果就是最小公倍数

输入两个正整数,求其最大公约数和最小公倍数。
输入两个正整数m和n,求其最大公约数和最小公倍数。解:程序:include <stdio.h> int main(){ int num1, num2, t,p;printf("请输入两个正整数:");scanf("%d,%d", &num1, &num2);\/\/7,8 p = num1*num2;while (t = num1%num2)\/\/7 1 0,循环结束 { num1 = num...

c语言,在键盘上输入两个数,输出这两个数的最小公倍数和最大公约数
void main() \/*主程序开始*\/ { int aa,bb,a,b,c,t;printf("请输入要求最大公约数和最小公倍数的两个整数:\\n");scanf("%d %d",&a,&b);aa=a;bb=b;if(a

[C语言]编程:输入两个正整数,求其最大公约数和最小公倍数
int main(){ int m, n;int gcd, lcm;scanf("%d%d", &m, &n);gcd = m < n ? m : n;lcm = m > n ? m : n;do { if(m % gcd == 0 && n%gcd==0)break;gcd--;}while(1);do { if(lcm % m == 0 && lcm % n==0)break;lcm++;}while(1);printf("gcd=%d ...

c语言,输入俩个正整数n和m,求其最大公约数和最小公倍数
include<stdio.h>void main(){int a,b,i;scanf("%d %d",&a,&b);for(i=a+b;i>1;i--){if(a%i==0&&b%i==0){printf("最大公约数为%d,最小公倍数为%d\\n",i,a*b\/i);return 0;}}printf("最大公约数为1,最小公倍数为%d\\n",a*b);return 0;} 给你来个最简单的吧 ...

用C语言编写程序:输入两个正整数m,n.求其最大公约数和最小公倍数
printf("请输入2个正整数m和抄n:");scanf("%d%d",&m,&n);a=m;b=n;if(m<n){ temp="m;" m="n;" n="temp;" }="" if(0="=n){" printf("除数为0!\\n");="" return;="" while(temp!="0){" printf("最大公约数袭为:zhidao%d\\n",n);="" printf("最小公倍数...

题目:输入两个正整数m和n,求其最大公约数和最小公倍数。用C语言编程
输入两个正整数m和n, 求其最大公约数和最小公倍数.<1> 用辗转相除法求最大公约数 算法描述:m对n求余为a, 若a不等于0 则 m <- n, n <- a, 继续求余 否则 n 为最大公约数 <2> 最小公倍数 = 两个数的积 \/ 最大公约数 include int main(){ int m, n;int m_cup, n_cup...

相似回答