Найти наибольший общий делитель трех чисел - C (СИ)
Формулировка задачи:
Даны два натуральных числа A и B. Требуется найти их наибольший общий делитель (НОД).
Входные данные
Во входном файле INPUT.TXT в единственной строке записаны натуральные числа A и B через пробел (A, B ≤ 109).
Выходные данные
В выходной файл OUTPUT.TXT выведите НОД чисел А и В.
Задача не проходит тест на компиляцию: Compilation error, помогите найти почему.
#include <stdio.h> int main() { long a,b; FILE *fin, *fout; fin=fopen("input.txt","r"); fout=fopen("output.txt","w"); fscanf(fin, "%ld %ld",&a, &b); while ((a*b)>0){ if (a>=b) a = a % b; else b = b % a; } fprintf(fout, "%ld",a+b); fclose(fin); fclose(fout); return 0; }
Решение задачи: «Найти наибольший общий делитель трех чисел»
textual
Листинг программы
#include <stdio.h> int a,b; int main(){ freopen("input.txt","r",stdin); freopen("output.txt","w",stdout); scanf ("%i %i",&a,&b); while(b) b^=a^=b^=a%=b; printf("%i",a); return 0; }
Объяснение кода листинга программы
В этом коде на языке C выполняется следующая последовательность действий:
- Открывается файл
input.txt
для чтения данных с помощью функцииfreopen()
. - Открывается файл
output.txt
для записи результата с помощью функцииfreopen()
. - С помощью функции
scanf()
вводятся два числа a и b. - Используется цикл
while
для нахождения наибольшего общего делителя (НОД) двух чисел. - В каждой итерации цикла выполняется операция XOR между a и b, затем результат присваивается переменной b.
- Результат НОД сохраняется в переменной a.
- Наконец, результат выводится на экран с помощью функции
printf()
и программа возвращает 0, указывая на успешное выполнение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д