当前位置:编程学习 > C/C++ >>

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语言,下面这个输出来,为什么是负的

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,