Program C k nalezení LCM dvou čísel

V tomto příkladu se naučíte vypočítat LCM (nejnižší společný násobek) dvou čísel zadaných uživatelem.

Abychom pochopili tento příklad, měli byste mít znalosti o následujících programovacích tématech jazyka C:

  • Programovací operátoři C.
  • C pokud … jiné prohlášení
  • C zatímco a dělat … zatímco Loop

LCM dvou celých čísel n1 a n2 je nejmenší kladné celé číslo, které je dokonale dělitelné jak n1, tak n2 (bez zbytku). Například LCM 72 a 120 je 360.

LCM pomocí while a if

 #include int main() ( int n1, n2, max; printf("Enter two positive integers: "); scanf("%d %d", &n1, &n2); // maximum number between n1 and n2 is stored in min max = (n1> n2) ? n1 : n2; while (1) ( if (max % n1 == 0 && max % n2 == 0) ( printf("The LCM of %d and %d is %d.", n1, n2, max); break; ) ++max; ) return 0; ) 

Výstup

 Zadejte dvě kladná celá čísla: 72 120 LCM 72 a 120 je 360. 

V tomto programu jsou celá čísla zadaná uživatelem uložena v proměnné n1 respektive n2.

Největší počet mezi n1 a n2 je uložen v max. LCM dvou čísel nesmí být menší než max.

Testovací výraz whilesmyčky je vždy pravdivý.

V každé iteraci je zkontrolováno, zda je max dokonale dělitelné čísly n1 a n2.

 if (min% n1 == 0 && max% n2 == 0) (…) 

Pokud tato testovací podmínka není pravdivá, max se zvýší o 1a iterace pokračuje, dokud nebude testovací výraz ifpříkazu pravdivý.

LCM dvou čísel lze také najít pomocí vzorce:

 LCM = (num1 * num2) / GCD 

Naučte se, jak najít GCD dvou čísel v programování C.

Výpočet LCM pomocí GCD

 #include int main() ( int n1, n2, i, gcd, lcm; printf("Enter two positive integers: "); scanf("%d %d", &n1, &n2); for (i = 1; i <= n1 && i <= n2; ++i) ( // check if i is a factor of both integers if (n1 % i == 0 && n2 % i == 0) gcd = i; ) lcm = (n1 * n2) / gcd; printf("The LCM of two numbers %d and %d is %d.", n1, n2, lcm); return 0; ) 

Výstup

 Zadejte dvě kladná celá čísla: 72 120 LCM dvou čísel 72 a 120 je 360. 

Zajímavé články...