Найти наибольший общий делитель трех чисел - 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 выполняется следующая последовательность действий:

  1. Открывается файл input.txt для чтения данных с помощью функции freopen().
  2. Открывается файл output.txt для записи результата с помощью функции freopen().
  3. С помощью функции scanf() вводятся два числа a и b.
  4. Используется цикл while для нахождения наибольшего общего делителя (НОД) двух чисел.
  5. В каждой итерации цикла выполняется операция XOR между a и b, затем результат присваивается переменной b.
  6. Результат НОД сохраняется в переменной a.
  7. Наконец, результат выводится на экран с помощью функции printf() и программа возвращает 0, указывая на успешное выполнение.

Оцени полезность:

14   голосов , оценка 4.071 из 5
Похожие ответы