Форум программистов, компьютерный форум, киберфорум
Наши страницы

В интервале от a до b найти число с наибольшим количеством делителей - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Программа разбора и вычисления значения арифметического выражения http://www.cyberforum.ru/cpp-beginners/thread658742.html
Написать программу разбора и вычисления значения арифметического выражения. На входе программы — строка, содержащая числа, скобки «(» и «)» и знаки 4-х арифметических операций: + - * / На выходе —...
C++ Ввод числа Помогите с заданием: нужно написать программу С++, которая с помощью операторов ввода-вывода (printf и scanf) вводит и выводит на экран числовые значения переменных. А значения таковы: E=10^3, F=... http://www.cyberforum.ru/cpp-beginners/thread658733.html
C++ Упорядочить матрицу
Разработать программу, которая вводит целочисленную матрицу из n строк и m столбцов (1<n<=100, 1<m<=50) и упорядочить все элементы матрицы таким образом, чтобы при чтении матрицы по строкам ее...
C++ Задача на "особый" элемент матрицы
Задача: Дана целочисленная матрица A (N.M). Определить количество "особых" элементов массива А, считая элемент "особым", если в его строке слева от него находятся элементы, меньшие его, а справа...
C++ Задача на циклы: Можно ли разменять m рублей http://www.cyberforum.ru/cpp-beginners/thread658708.html
Можно ли разменять m рублей на рублёвые, трёхрублёвые, пятирублёвые купюры так, чтобы получить всего 10 купюр? При этом известно, что 10<m<50. Вот такое условие. Вот что я намалякал):...
C++ Вычислить коэффициент трения Всем доброго время суток. Тело соскальзывает с наклонной плоскости (угол наклона \alpha) с ускорением a. Написать программу для определения коэффициента трения k тела о плоскость. Воспользоваться... подробнее

Показать сообщение отдельно
Thinker
Эксперт С++
4228 / 2202 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
28.09.2012, 14:26
valeriikozlov, вот функция, которая работает быстрее, чем все предыдущие функции данного раздела, причем в разы
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
unsigned long Count(unsigned long a)
{
   unsigned long count = 1, k = 0, i;
   if (a == 1 || a == 2)
      return a;
   while ((a & 1) == 0)
   {
      k++;
      a >>= 1;
   }
   if (a == 1)
      return k + 1;
   else
      count = k + 1;
   for(i = 3; i*i <= a; i += 2)
   {
      k = 0;
      while(a % i == 0)
      {
         k++;
         a /= i;
      }
      count *= (k + 1);
   }
   if (a > 1)
      count <<= 1;
   return count;
}
Можно еще быстрее сделать.
3
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru