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 while
smyč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 1
a iterace pokračuje, dokud nebude testovací výraz if
pří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.