У цьому прикладі ви навчитеся обчислювати LCM (найнижче загальне кратне) двох чисел, введених користувачем.
Щоб зрозуміти цей приклад, ви повинні знати такі теми програмування на С:
- C Оператори програмування
- C if… else Заява
- C в той час як і робити … поки Loop
LCM двох цілих чисел n1 та n2 є найменшим додатним цілим числом, яке ідеально ділиться як на n1, так і на n2 (без залишку). Наприклад, LCM 72 і 120 дорівнює 360.
LCM, використовуючи while і 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; )
Вихідні дані
Введіть два натуральних числа: 72 120 LCM 72 і 120 дорівнює 360.
У цій програмі цілі числа, введені користувачем, зберігаються у змінних n1 та n2 відповідно.
Найбільше число серед n1 та n2 зберігається у макс. LCM двох чисел не може бути меншим за макс.
Тестовий вираз while
циклу завжди відповідає дійсності.
У кожній ітерації перевіряється, чи max максимально ділиться на n1 та n2.
якщо (хв% n1 == 0 && макс% n2 == 0) (…)
Якщо ця умова тесту не відповідає дійсності, max збільшується на 1
і ітерація продовжується, доки тестовий вираз if
твердження не буде істинним.
LCM двох чисел також можна знайти за формулою:
LCM = (num1 * num2) / GCD
Дізнайтеся, як знайти GCD двох чисел у програмуванні на Сі.
Розрахунок LCM за допомогою 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; )
Вихідні дані
Введіть два натуральних числа: 72 120 LCM двох чисел 72 і 120 дорівнює 360.