W tym przykładzie nauczysz się obliczać LCM (Najniższa wspólna wielokrotność) dwóch liczb wprowadzonych przez użytkownika.
Aby zrozumieć ten przykład, powinieneś znać następujące tematy programowania w C:
- Operatorzy programowania C.
- C if… else Statement
- C while i zrób… while Loop
NWW dwóch liczb całkowitych n1 i n2 jest najmniejszą dodatnią liczbą całkowitą, która jest doskonale podzielna przez n1 i n2 (bez reszty). Na przykład LCM 72 i 120 wynosi 360.
LCM przy użyciu while i 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; )
Wynik
Wprowadź dwie dodatnie liczby całkowite: 72 120 NWW 72 i 120 wynosi 360.
W programie tym liczby całkowite wprowadzone przez użytkownika są przechowywane odpowiednio w zmiennej n1 i n2.
Największa liczba spośród n1 i n2 jest przechowywana w max. NWW dwóch liczb nie może być mniejsze niż maks.
Testowe wyrażenie while
pętli jest zawsze prawdziwe.
W każdej iteracji sprawdzane jest, czy max jest doskonale podzielne przez n1 i n2.
if (min% n1 == 0 && max% n2 == 0) (…)
Jeśli ten warunek testu nie jest prawdziwy, wartość max jest zwiększana o, 1
a iteracja jest kontynuowana, aż wyrażenie testowe if
instrukcji będzie prawdziwe.
NWW dwóch liczb można również znaleźć za pomocą wzoru:
LCM = (num1 * num2) / GCD
Dowiedz się, jak znaleźć GCD dwóch liczb w programowaniu w C.
Obliczanie LCM przy użyciu 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; )
Wynik
Wpisz dwie dodatnie liczby całkowite: 72 120 NWW dwóch liczb 72 i 120 wynosi 360.