用C语言编写一个可以求输入的两个数的最大公约数和最小公倍数的程序。

可以运行,不能得到答案

#include <stdio.h>
void main()
{
int m,n,k,min,max,i;
scanf("%d%d",&m,&n);
if(n<m)
{
k=n;
n=m;
m=k;
}
for(i=m;i>0;i++)
{
if((m%i==0)&(n%i==0))
{
max=i;
break;
}
}
min=m*n/max;
printf("%d和%d的最大公约数是%d\n",m,n,max);
printf("%d和%d的最小公倍数是%d\n",m,n,min);
}
这个是我的程序,其中利用了最小公倍数是两个数的乘积除以最大公倍数,希望能够帮到你。追问

我还没学void 和for 可以用int型和while语句解决吗?

追答

#include
int main()
{
int m,n,k,min,max,i;
scanf("%d%d",&m,&n);
if(n0)
{
if((m%i==0)&(n%i==0))
{
max=i;
break;
}
i--;
}
min=m*n/max;
printf("%d和%d的最大公约数是%d\n",m,n,max);
printf("%d和%d的最小公倍数是%d\n",m,n,min);
}
定义main函数的类型的时候,void和int是没有区别的,其实绝大多数时候定的是void,也就是空类型。for语句和while语句是一样的,这个是我修改后的程序,希望同样能帮到你。

追问

我看懂您求最大公约数的方法了,的确很新颖。如果要用辗转相除法应该怎么表示?

追答

#include<stdio.h>

int main()

{

int m,n,r,p,k;

scanf("%d%d",&m,&n);

if(n>m)

{

k=n;

n=m;

m=k;

}

p=m*n;

while(m!=0)

{

r=n%m;

n=m;

m=r;

}

printf("这是最大公约数:%d\n",n);

printf("这是最小公倍数:%d\n",p/n);

return 0;

}

这个是我给你修改后的程序,你的程序思路上是正确的,只是有两个细节错了。

    两个数值比较的时候,if里面的语句应该是(n>m),,而不是(n<m);2

    while里面应该是(m!=0),而不是(m=0);

温馨提示:内容为网友见解,仅供参考
无其他回答

c语言编程求输入两个数的最大公约数和最小公倍数
= 0) { t = m%n; m = n; n = t; } printf ("%d 和 %d 的最大公约数是:%d\\n",m1,n1,m); printf ("最小公倍数是:%d\\n",m1*n1\/m);}

C语言——求最大公约数和最小公倍数的简单程序
本文讲解一下利用C语言求两个数字的最大公约数以及最小公倍数的方法。首先打开编译器,这里用的是VC++6.0,然后新建工程,选择下方的控制台应用程序,也就是“win32 console application”。然后新建一个文件,选择“C++ source file”,然后输入文件名,点击确定。接着输入如图所示的代码,注意检查看有...

在c语言中输入两个正整数m和n,求其最大公约数和最小倍数
printf("请输入两个正整数:");scanf_s("%d,%d", &num1, &num2);p = num1*num2;while (t = num1%num2){ num1 = num2;num2 = t;} p = p \/ num2;printf("它们的最大公约数:%d\\n", num2);printf("它们的最小公倍数:%d\\n", p);system("pause");return 0;} ...

c语言编程,求两个数的最大公约数和最小公倍数
} printf("最大公约数是:%d \\n",n);} 图:

用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...

输入2个整数,求最大公约数,最小公倍数。用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...

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

[C语言]编程:输入两个正整数,求其最大公约数和最小公倍数
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 lcm=%d\\n"...

C语言 求输入a、b,求这两个数的最大公约数和最小公倍数~求助~
根据数学定义,要求a,b两个数的最大公约数,只需要找到能够同时整除a和b的最大整数即可,而最小公倍数为a*b\/最大公约数。对此,编写代码如下:int gcd(int a, int b){ int m = a>b?b:a; int r; for(r = m; r >0; r --) if(a%r==0 && b%r == 0) break...

...个程序,求出任意两个数的最大公约数和最小公倍数!在线等答案……_百...
int a,b; cout<<"请输入第一个数:"<<endl; cin>>a; cout<<"请输入第二个数:"<<endl;cin>>b;int c=Gyshu(a,b); int d=Gbshu(a,b);cout<<"最大公约数为:"<<c<<endl; cout<<"最小公倍数为:"<<d<<endl; return 0;}\/\/最大公约数的函数int Gyshu...

相似回答