C程序最小公倍数得问题
(1)#include "stdio.h"
void main()
{
int a,b,s;
printf("input a=");
scanf("%d",&a);
printf("input b=");
scanf("%d",&b);
s=a;
if(s%b==0)
printf("%d",s);
else while(s%b!=0)
s=s+a;
printf("%d",s);
}
(2)#include "stdio.h"
void main()
{
int a,b,s;
printf("input a=");
scanf("%d",&a);
printf("input b=");
scanf("%d",&b);
s=a;
while(a%s!=0 || b%s!=0)
s--;
printf("s=%d",s);
}
第一个求最小公倍数和第二个求最小公倍数算法上有什么区别?不仅仅是多了一条if语句吧.两种都可以得到答案吗?
追问:s=(a>b?a:b);
我是新手..这句看得不太懂喔..
答案:两种都有问题:
(1)#include "stdio.h"
void main()
{
int a,b,s;
printf("input a=");
scanf("%d",&a);
printf("input b=");
scanf("%d",&b);
s=a; 你默认了a>b
if(s%b==0)
printf("%d",s);
else while(s%b!=0)
s=s+a;
printf("%d",s);
}
(2)#include "stdio.h"
void main()
{
int a,b,s;
printf("input a=");
scanf("%d",&a);
printf("input b=");
scanf("%d",&b);
s=a; 改成s=(a>b?a:b);
while(a%s!=0 || b%s!=0) 这是求最小公约数吧,while(s%a!=0 || s%b!=0) s++;
s--;
printf("s=%d",s);
}
其他:题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 1.程序分析:辗转相除法,是由欧几里德算法而来。其基本原理如下:如果要求两个正整数a和
上一个:C语言问题
下一个:C语言,下面这个输出来,为什么是负的