Загрузка...

Решите задачку язык си

Тема в разделе C/C++ создана пользователем lolisc 17 апр 2021. 163 просмотра

  1. lolisc
    lolisc Автор темы 17 апр 2021 7 12 июл 2019
    нужно на языке Си найти наибольший общий делитель двух чисел (положительных) с циклом while
     
  2. SCAM
    SCAM 17 апр 2021 Я НЕ СКАМ 784 17 окт 2017
    одно из главных умений программиста - это искать инфу в интернете. загугли "наибольший общий делитель двух чисел на си" и будет тебе счастье
     
    1. lolisc Автор темы
      SCAM, не гуглит
    2. SCAM
      lolisc,
      C

      long Nod(long a, long b)
      {
      while (a && b)
      if (a >= b)
      a %= b;
      else
      b %= a;
      return a | b;
      }
      C
      long Nod(long a, long b)
      {
      while (a && b)
      if (a >= b)
      a -= b;
      else
      b -= a;
      return a | b;
      }
      C
      long Nod(long a, long b)
      {
      long deg = 0;
      if (a == 0 || b == 0)
      return a | b;
      while (((a | b) & 1) == 0)
      {
      deg++;
      a >>= 1;
      b >>= 1;
      }
      while (a && b)
      {
      if (b & 1)
      while ((a & 1) == 0)
      a >>= 1;
      else
      while ((b & 1) == 0)
      b >>= 1;
      if (a >= b)
      a = (a - b) >> 1;
      else
      b = (b - a) >> 1;
      }
      return ((a | b) << deg);
      }
Top
Загрузка...