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

Быстрое нахождение количества делителей натурального числа - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Оптимизация проекта (настройка) http://www.cyberforum.ru/cpp-beginners/thread659678.html
Здравствуйте! Назвал тему так как удобно будет искать другим по ключевым словам. Среда VC2008. Моя проблема такая - создаю форму из готовых шаблонов. Подключается кучка всяких файлов. Но когда компилирую всю эту паутину файлов сразу с пустой формой, то приложение "весит" примерно 10 Мб в оперативке. Сам вижу два варианта решения: удалять лишнее из проекта или создавать пустой проект и...
C++ Перевод чисел из одной системы счисления в другую Здравствуйте. Помогите, пожалуйста, доделать программу. Условие: перевод чисел из десятичной сисетмы счисления в другую. Помогите переделать так, чтобы ввод осуществлялся с клавиатуры, а не в самом коде и исправьте ошибки, чтобы программа работала: #include <stdio.h> #include <windows.h> #include <cmath> char int2symbol(int num) { if(num < 10) return '0' + num; else http://www.cyberforum.ru/cpp-beginners/thread659671.html
Библиотеки С++ C++
Есть ли какой-нибудь справочник по описанию С/С++ библиотек, заголовочных файлов, макросов и прочего? Для печати//англ/русск//примеры
Дано четырехзначное натуральное число А. Требуется определить что больше: число А или произведение его цифр? C++
Дано четырехзначное натуральное число А. Требуется определить что больше: число А или произведение его цифр?
C++ Что на выходе у функции insert ? http://www.cyberforum.ru/cpp-beginners/thread659612.html
В учебнике предлагают такой способ подсчета слов одинаковых, !именно с пом итератора: map<string,int> m; while(cin>>str){ pair<map<string,int>::iterator,bool> p=m.insert(make_pair(str,1)); if(!p.second){++p.first->second;} } Но, он мне не совсем понятен...
C++ winnt.h(5545) : error C2146: что за ошибка ? c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(5545) : error C2146: syntax error : missing ';' before identifier 'ContextRecord' c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(5545) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(5545) : error C4430: missing... подробнее

Показать сообщение отдельно
Thinker
Эксперт C++
4221 / 2195 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
11.10.2012, 13:54  [ТС]     Быстрое нахождение количества делителей натурального числа
Еще один очень быстрый алгоритм нахождения суммы делителей. Отличается от предыдущего меньшим количеством делений. По скорости одинаковы.
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
31
unsigned long Sum(unsigned long a)
{
   unsigned long sum = 1, k = 1, i, p;
   if (a == 1)
      return a;
   while ((a & 1) == 0)
   {
      k <<= 1;
      a >>= 1;
   }
   k = (k << 1) - 1;
   if (a == 1)
      return k;
   else
      sum = k;
   for(i = 3; i*i <= a; i += 2)
   {
      p = k = 1;
      while(a % i == 0)
      {
         k *= i;
         p += k;
         a /= i;
      }
      if (k > 1)
         sum *= p;
   }
   if (a > 1)
      sum *= a + 1;
   return sum;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru