Примеры различных способов вычисления НОД двух целых чисел (как для положительных, так и для отрицательных целых чисел) с использованием циклов и операторов принятия решений.
Чтобы понять этот пример, вы должны знать следующие темы программирования на C:
- Операторы программирования на C
- C для цикла
- C if… else Заявление
- C while и do … while Цикл
HCF или GCD двух целых чисел - это наибольшее целое число, которое может точно разделить оба числа (без остатка).
Существует много способов найти наибольший общий делитель в программировании на C.
Пример # 1: Использование GCD для цикла и оператора if
#include int main() ( int n1, n2, i, gcd; printf("Enter two integers: "); scanf("%d %d", &n1, &n2); for(i=1; i <= n1 && i <= n2; ++i) ( // Checks if i is factor of both integers if(n1%i==0 && n2%i==0) gcd = i; ) printf("G.C.D of %d and %d is %d", n1, n2, gcd); return 0; )
В этой программе два целых числа, введенные пользователем, сохраняются в переменных n1 и n2. Затем for
цикл повторяется до тех пор, пока i не станет меньше n1 и n2.
На каждой итерации, если и n1, и n2 точно делятся на i, значение i присваивается gcd.
Когда for
цикл завершается, наибольший общий делитель двух чисел сохраняется в переменной gcd.
Пример №2: GCD с использованием цикла while и оператора if… else
#include int main() ( int n1, n2; printf("Enter two positive integers: "); scanf("%d %d",&n1,&n2); while(n1!=n2) ( if(n1> n2) n1 -= n2; else n2 -= n1; ) printf("GCD = %d",n1); return 0; )
Вывод
Введите два положительных целых числа: 81 153 GCD = 9.
Это лучший способ найти GCD. В этом методе меньшее целое число вычитается из большего целого числа, а результат присваивается переменной, содержащей большее целое число. Этот процесс продолжается до тех пор, пока n1 и n2 не станут равными.
Две указанные выше программы работают по назначению, только если пользователь вводит положительные целые числа. Вот небольшая модификация второго примера, чтобы найти НОД как для положительных, так и для отрицательных целых чисел.
Пример # 3: НОД для положительных и отрицательных чисел
#include int main() ( int n1, n2; printf("Enter two integers: "); scanf("%d %d",&n1,&n2); // if user enters negative number, sign of the number is changed to positive n1 = ( n1> 0) ? n1 : -n1; n2 = ( n2> 0) ? n2 : -n2; while(n1!=n2) ( if(n1> n2) n1 -= n2; else n2 -= n1; ) printf("GCD = %d",n1); return 0; )
Вывод
Введите два целых числа: 81-153 НОД = 9.
Вы также можете использовать рекурсию для поиска GCD.