Проверить, являются ли два введенных числа взаимно простыми - C (СИ)
Формулировка задачи:
Ввести два числа, напечатать, являются ли они взаимно простыми или нет.
Решение задачи: «Проверить, являются ли два введенных числа взаимно простыми»
textual
Листинг программы
#include <stdio.h>
//обычный алгоритм Евклида через остатки
long Nod(long a, long b)
{
while (a && b)
if (a >= b)
a %= b;
else
b %= a;
return a | b;
}
int main()
{
printf("input x y:")
long x, y;
scanf("%ld%ld", &x, &y);
printf( (Nod(x, y)==1)?"Coprime numbers":"not coprime numbers");
return 0;
}
Объяснение кода листинга программы
Код выполняет следующую последовательность действий:
- Включает стандартную библиотеку ввода-вывода
- Определяет функцию
Nod, которая реализует алгоритм Евклида для нахождения НОД двух чисел - Определяет функцию
main, которая запрашивает у пользователя ввод двух чисел, затем вызывает функциюNodдля этих чисел и выводит результат на экран - Выводит сообщение
input x y: - Объявляет две переменные типа long
xиy, которые будут использоваться для хранения введенных пользователем чисел - Использует функцию
scanfдля считывания двух чисел и сохранения их в переменныхxиy - Использует условный оператор if-else для проверки результата функции
Nod. Если результат равен 1, то выводит сообщениеCoprime numbers, иначе выводит сообщениеnot coprime numbers - Возвращает 0, чтобы указать, что программа успешно завершилась