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

Найти число с максимальной суммой делителей - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Реализовать шаблон класса для хранения динамического списка http://www.cyberforum.ru/cpp-beginners/thread668608.html
Нужно реализовать: 1.Операции вставки элемента в начало списка 2.Операцию удаления первого элемента 3.Деструктор высвобождающий всю выделенную память Пример template <typename T> class List {...
C++ Запись в бинарный файл работает не коректно, где ошибка? Здравствуйте, делаю лабораторную работу, запись структуры Students в бинарный файл. код написал, но он работает корректно только при первом вводе, при последующих почему то пропускает запись фамилии,... http://www.cyberforum.ru/cpp-beginners/thread668578.html
Распараллеливание циклов с ипользованием OpenMP C++
Есть проблема , получился парадокс - время роботы программы с распараллеливанием дольше на 1 сек чем без распараллеливания, ожидалось наоборот . Для наглядности сделал матрицу 1000х40, чтоб...
C++ Библиотека для xml парсинга
Доброго времени суток. У меня появилась необходимость чтения xml из потока (файлы будут находится на другой машине). Библиотеки, которые я знаю, вроде, поддерживают только полную загрузку...
C++ sizeof http://www.cyberforum.ru/cpp-beginners/thread668553.html
Подскажите пожалуйста что делаю не так? в базовом классе gameElement, имеется матрица указателей на базовый класс: gameElement* arr; есть класс наследник: wall. В конструкторе класса wall...
C++ Создание на C++ программы с MySQL Всем привет! Слышал что на этом форуме могут помочь написать программку. Задача: 1) Программа определяет разрядность и копирует ключ реестра. 2) Запускает файл другой программы и перед запуском... подробнее

Показать сообщение отдельно
Thinker
Эксперт С++
4227 / 2201 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
11.10.2012, 13:38
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include<stdio.h>
unsigned long Sum(unsigned long a)
{
   unsigned long sum = 1, k = 1, i;
   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)
   {
      k = 1;
      while(a % i == 0)
      {
         k *= i;
         a /= i;
      }
      if (k > 1)
         sum *= ((k * i) - 1)/(i - 1);
   }
   if (a > 1)
      sum *= a + 1;
   return sum;
}
 
int main()
{
   unsigned long n, i, max, a, buf;
   scanf("%lu", &n);
   max = a = 0;
   for(i = 1; i <= n; i++)
      if ((buf = Sum(i)) > max)
      {
         max = buf;
         a = i; 
      }
   printf("%lu\n", a);
   return 0;    
}
можно проще, но будет работать медленнее.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<stdio.h>
 
unsigned long Sum(unsigned long a, unsigned long i)
{
   return a == i ? 1 : (Sum(a, i + 1) + ((a % i) ? 0 : i));  
}
 
int main()
{
   unsigned long n, i, max, a, buf;
   scanf("%lu", &n);
   max = a = 0;
   for(i = 1; i <= n; i++)
      if ((buf = Sum(i, 1)) > max)
      {
         max = buf;
         a = i; 
      }
   printf("%lu\n", a);
   return 0;    
}
3
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru