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

Найти все совершенные числа в заданном интервале - C++

Восстановить пароль Регистрация
 
Dmitriy45
0 / 0 / 0
Регистрация: 05.11.2016
Сообщений: 14
09.11.2016, 11:23     Найти все совершенные числа в заданном интервале #1
Задача.
Натуральное число называется совершенным, если оно равно сумме всех своих простых делителей, например 6 = 1 + 2 + 3. Найти все совершенные числа в заданном интервале.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2016, 11:23     Найти все совершенные числа в заданном интервале
Посмотрите здесь:

C++ Вывести все нечетные числа в заданном интервале
C++ Найти все совершенные числа (С++)
Вывести все числа Армстронга в заданном интервале C++
Найти все совершенные числа от M до N C++
C++ Получить все простые числа в заданном интервале
Вывести на консоль все числа Мерсена в заданном интервале C++
Найти и распечатать все совершенные числа в заданном интервале C++
Найти в заданном интервале все числа, которые делятся на 13 C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Maxim Prishchepa
Эксперт С++
 Аватар для Maxim Prishchepa
1875 / 987 / 61
Регистрация: 29.03.2010
Сообщений: 2,983
09.11.2016, 11:35     Найти все совершенные числа в заданном интервале #2
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
std::list<int> divs(int value)
{
   list<int> result;
   for (int i = 0; i < value ++i)
   {
       if (value % i == 0)
       {
            result.add(i);
       }
   }
   return result;
}
 
bool isPerfect(int value)
{
     int result = 0;
     for(int i : divs(value))
     {
        result += i;
     }
     return result == value;
}
 
int main()
{
   int beginRange;
   cin >> beginRange;
 
   int endRange;
   cin >> endRange;
 
   for(int range = beginRange; range <= endRange; ++range)
   {
         if (true == isPerfect(range))
         {
               cout << range << " is perfect";
         }
   }
   return 0;
}
SpBerkut
Объявлятель переменных
 Аватар для SpBerkut
905 / 231 / 113
Регистрация: 24.09.2011
Сообщений: 874
Завершенные тесты: 2
09.11.2016, 11:45     Найти все совершенные числа в заданном интервале #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
int main()
{
    unsigned long perfects[] = {6,28,496,8128,33550336,8589869056,137438691328,2305843008139952128};
    unsigned long a, b;
    std::cout << "a: ";
    std::cin >> a;
    std::cout << "b: ";
    std::cin >> b;
    if (a>b) a ^= b ^= a ^= b;
    for (int i = 0; i < 8; i++) {
        if (a <= perfects[i] && perfects[i] <= b) {
            std::cout << perfects[i] << std::endl;
        }
    }
}
Atakai
 Аватар для Atakai
53 / 9 / 5
Регистрация: 23.10.2015
Сообщений: 32
09.11.2016, 11:47     Найти все совершенные числа в заданном интервале #4
Более простое решение:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
using namespace std;
 
int main()
{
    int start = 1,
        end = 10000,
        dividers;
    
    for (int i = start; i < end; i++) {
        dividers = 0;
        
        for (int j = 1; j < i; j++)
            if (!(i%j))
                dividers+=j;
        
        if (i == dividers)
            cout << i << "\n";
    }
}
Yandex
Объявления
09.11.2016, 11:47     Найти все совершенные числа в заданном интервале
Ответ Создать тему

Метки
С++ для начинающих
Опции темы

Текущее время: 06:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru