c语言最大公约数最小公倍数

来源:百度知道 编辑:UC知道 时间:2024/05/09 18:13:03
#include <stdio.h>
main()
{
int m,n,max,min;
scanf("%d,%d",&m,&n);
{
if (m>n) max=m,min=n;
else min=m, max=n;
}
for (;((n%min)==0) && ((m%min)==0);min--) printf("%d is the greatest commom divisor,\n",min);
for(;((max%m)==0) && ((max%n)==0);max++) printf("%d is the lease commom multiple.\n",max);
}
程序只对10,20这种整除的有效,否则没有显示,怎么回事啊?谁帮帮我

那两个for语句使用的不对。
你的第一个for执行的条件是min能够同时整除m和n,否则跳出循环。也就是说,一旦min一上来就不能整除m和n,那么将直接跳出循环。第二个for语句也是类似的。
应该把for的循环条件改成语原来相反的条件,即((n%min)!=0)||((m%min)!=0);和((max%m)!=0)||((max%n)!=0)。并且在for与printf()中间加个“;”,要不然屏幕上会显示从min的初始值到所求结果中间所有的数字。

这样就行了
#include <stdio.h>
void main()
{
int m,n,max,min;
scanf("%d,%d",&m,&n);
if (m>n) max=m,min=n;
else min=m, max=n;
for (;!(((n%min)==0) && ((m%min)==0));min--); printf("%d is the greatest commom divisor,\n",min);
for(;!(((max%m)==0) && ((max%n)==0));max++); printf("%d is the lease commom multiple.\n",max);
}

你的题目是让你随机输入最大公约数最小公倍数吗,不可能吧,你的程序写的意思是什么啊,键盘输入2个数,比较大小,如果大的那个满足循环中的条件就是最大公约数?而且
{
if (m>n) max=m,min=n;
else min=m, max=n;
}
这对括号有用吗?里面的句子加括号才对吧,怎么还有逗号啊,用逗号表达式也不是你的意思啊。总而言之,不明白你写的。

你那个程序错了正确的应该是
#include"stdio.h"
void main()
{
int m,n,t,l,m1,n1;
scanf