Напишите функцию, вычисляющую НОД двух целых чисел - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Напишите функцию на языке Си, вычисляющую НОД двух целых чисел
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
int main(void)
{
    int a,b,c,n,i;
    printf("vvedite 2 chisla cherez probel\n");
    scanf("%d%d",&a,&b);
    if ((a>b)&&(b==0)) {printf("net resheniya\n"); system("pause");return 1;}
    if ((a<b) &&(a==0)) {printf("net resheniya\n"); system("pause");return 1;}
    if ((a==0) &&(b==0)) {printf("net resheniya\n"); system("pause");return 1;}
    if (a<b)
    {c=a;
    a=b;
    b=c;
    n=a;}
    else
    { 
    n=b;}
    for (i=n; i>0; i--)
    {
    if (a%i==0)
    if (b%i==0)
    printf(" otvet %d\n",i);}
    system("pause");
    return 0;
}
Вот в принципе Тесты: 7 3:1 24 48:24 98 18:2 Проблема состоит в том если вести 24 и 48 чтоб он выводил только один ответ. Как это сделать?

Решение задачи: «Напишите функцию, вычисляющую НОД двух целых чисел»

textual
Листинг программы
for (i=n; i>0; i--)
    {
    if (a%i==0 && b%i==0){ printf("Naibil`shiy spil`niy dil`nik - %d\n",i); break;}
    
}

Объяснение кода листинга программы

В данном коде реализована функция, которая находит НОД (наибольший общий делитель) двух целых чисел a и b.

  1. Переменная i инициализируется значением n.
  2. Цикл for выполняется, пока i больше 0.
  3. Внутри цикла проверяется, делится ли a и b на i без остатка. Если да, то i является НОДом и цикл прерывается командой break.
  4. Выводится сообщение Naibilshiy spilniy dilnik - i`, где i — найденный НОД.
  5. Значение i сбрасывается на 0.
  6. Цикл завершается. Код работает верно, но есть одна особенность — если a и b равны 0, то цикл будет выполняться бесконечно, так как при проверке условия a%i==0 и b%i==0, оба значения всегда будут равны 0. Поэтому перед началом цикла необходимо проверить, что a и b не равны 0.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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