Learn-c-by-examples-program-to-find-lcm-in-c

提供:Dev Guides
移動先:案内検索

CでLCMを見つけるプログラム

L.C.M. または2つの値の最小公倍数は、両方の値の倍数である最小の正の値です。

たとえば 3と4の倍数は-

*3* →3、6、9、 *12* 、15 ...
*4* →4、8、 *12* 、16、20 ...

両方の最小の倍数は12であるため、3と4のLCMは12です。

アルゴリズム

このプログラムのアルゴリズムは次のように導出することができます-

START
   Step 1 → Initialize A and B with positive integers
   Step 2 → Store maximum of A & B to max
   Step 3 → Check if max is divisible by A and B
   Step 4 → If divisible, Display max as LCM
   Step 5 → If not divisible then step increase max, goto step 3
STOP

疑似コード

このプログラムの擬似コードを派生させましょう-

procedure even_odd()

   Initialize A and B
   max = max(A, B)
   WHILE TRUE
      IF max is divisible by A and B THEN
         LCM = max
         BREAK
      ENDIF
      Increment max
   END WHILE
   DISPLAY LCM

end procedure

実装

このアルゴリズムの実装は以下のとおりです-

#include<stdio.h>

int main() {
   int a, b, max, step, lcm;

   a   = 3;
   b   = 4;
   lcm = 0;

   if(a > b)
      max = step = a;
   else
      max = step = b;

   while(1) {
      if(max%a == 0 && max%b == 0) {
         lcm = max;
         break;
      }

      max += step;
   }

   printf("LCM is %d", lcm);
   return 0;
}

出力

プログラムの出力は次のようになります-

LCM is 12