В този пример ще се научите да изчислявате LCM (най-ниското общо кратно) на две числа, въведени от потребителя.
За да разберете този пример, трябва да имате познанията по следните теми за програмиране на C:
- 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 на две числа не може да бъде по-малко от max.
Тестовият израз на while
цикъл винаги е верен.
Във всяка итерация се проверява дали max е перфектно делимо на n1 и n2.
ако (мин.% n1 == 0 && макс.% n2 == 0) (…)
Ако това условие на теста не е вярно, max се увеличава с 1
и итерацията продължава, докато тестовият израз на if
израза е истина.
LCM на две числа също може да бъде намерен по формулата:
LCM = (num1 * num2) / GCD
Научете как да намерите GCD на две числа в програмирането на C.
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.