Форум программистов, компьютерный форум CyberForum.ru

НОД (наибольший общий делитель) n-го количества чисел - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ setfill на одну строку http://www.cyberforum.ru/cpp-beginners/thread649031.html
Добрый день, подскажите пожалуйста, как сделать, что б setfill заполнял пустые места только у одного, определенного, поля, а не у всех?
C++ Обращение к функции через указатель Добрый день.Объясните для незнающего след.код:в частности строку номер:6class ListItem { public: void Append(ListItem *pItem) { pItem->m_pNext = this; m_pPrevious = pItem; m_pNext = NULL; } private: http://www.cyberforum.ru/cpp-beginners/thread649027.html
Обращение к функции C++
Здраствуйте! Написал программу которая должна считать количество строчек в файле ( без пустых строчек ), пустыми строчками называются те которые содержат пробел, символ табуляции и непечатаемые символы. Когда написал программу в функции int main, программа запустилась и правильно посчитала количество строчек, но когда я решил перенести решение основной задачи в функцию unsigned long...
C++ Function - Delete(s,n,l). Purpose - удаление из строки s подстроки
Function - Delete(s,n,l). Purpose - удаление из строки s подстроки, начиная с позиции n, длиной l (аналогичная библиотечная Function есть в Pascal).
C++ на входе программы даются два числа http://www.cyberforum.ru/cpp-beginners/thread649017.html
на входе программы даются два числа N и P. программа на выходе должна дать такое максимальное число М, что N! делится на Р в степени М, но не делится на Р в степени М+1. примечание: 1. числа N и Р так велики, что нет смысла считать значение N!. 2. числа N и Р являются натуральными.
C++ Перевод из 10 си в 11-16 помогите перевести число из десятиричной системы исчисления в любую другую начиная с 11 и заканчивая 16. с++ начал осваивать недавно сделал переводы с 2 по 9, а как сделать с 11 по 16 ни как не пойму. подробнее

Показать сообщение отдельно
Thinker
Эксперт C++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
12.09.2012, 11:41     НОД (наибольший общий делитель) n-го количества чисел
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include<iostream>
#include<cmath>
 
long Nod(long a, long b)
{
    while (a && b)
        if (a >= b)
           a %= b;
        else
           b %= a;
    return a | b;
}
 
int main()
{
   long i, n, a, nod;
   std::cout << " n = "; std::cin >> n;
   if (n > 0)
   {
      std::cin >> a;
      nod = labs(a);
      for(i = 1; i < n && nod != 1; ++i)
      {
         std::cin >> a;
         nod = Nod(labs(a), nod);
      }
      std::cout << "nod = " << nod;
   }
   return 0;
}
Можно покороче код записать, но он уступает предыдущему варианту.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<iostream>
 
 
long Nod(long a, long b)
{
   return a && b ? (a >= b ? Nod(a % b, b) : Nod(a, b % a)) : a + b;
}
 
long Nod_n(long *a, long *end)
{
   return a < end ? Nod(Nod_n(a + 1, end), *a) : 0;
}
 
int main()
{
   long a[] = {2, 6, 8, 10}, n;
   n = sizeof(a) / sizeof(*a);
   std::cout << "nod = " << Nod_n(a, a + n);
   return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru