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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Dmitriy45
0 / 0 / 0
Регистрация: 05.11.2016
Сообщений: 24
#1

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

09.11.2016, 11:23. Просмотров 245. Ответов 3

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

Найти и распечатать все совершенные числа в заданном интервале - C++
Чтсло равное сумме всех своих делителей,включая единицу,называется совершенным. Найти и распечатать все совершенные числа в интервале от...

Найти и напечатать все совершенные числа в заданном интервале - C++
Число равно сумме своих делителей включая единицу называется совершенных.Найти и напечатать все совершенные числа в интервале от 2 до x.

Найти в заданном интервале все числа, которые делятся на 13 - C++
Помогите пожалуйста, как найти цифры, которые деляться на 13, при этом они должны быть между двух вводимых чисел - a,b; когда сам написал,...

Вывести все простые числа в заданном интервале - C++
Доброго времени суток! Необходима Ваша помощь в написании программы на visual c++. Программы должна выводить все простые числа из...

Получить все простые числа в заданном интервале - C++
Пожалуйста помогите решить задачу, с++ вообще не понимаю, а сдавать надо. Даны натуральные числа a, b (a<b). Получить все простые числа p,...

Вывести все нечетные числа в заданном интервале - C++
Кому не трудно помочь с вторым и третьим вопросом. Буду очень благодарен.Спасибо.

3
Maxim Prishchepa
Эксперт С++
1923 / 1035 / 74
Регистрация: 29.03.2010
Сообщений: 3,167
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;
}
0
SpBerkut
Объявлятель переменных
908 / 234 / 113
Регистрация: 24.09.2011
Сообщений: 875
Завершенные тесты: 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;
        }
    }
}
0
Atakai
C++ n00b
68 / 26 / 13
Регистрация: 23.10.2015
Сообщений: 131
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";
    }
}
0
09.11.2016, 11:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.11.2016, 11:47
Привет! Вот еще темы с ответами:

Вывести все числа Армстронга в заданном интервале - C++
Здравствуйте, В универе дали задание: вывести все числа Армстронга в интервале ; Понимаю что это уже давно сделали, но я хотел свою...

Вывести на консоль все числа Мерсена в заданном интервале - C++
1. Вывести на консоль все числа Мерсена в заданном интервале. Числом Мерсена называется простое число n, которое представимо в виде n=2p-1,...

Найти все совершенные числа от M до N - C++
Совершенные числа (Время: 1 сек. Память: 16 Мб ) Число называется совершенным, если оно равно сумме всех своих делителей, меньших его...

Найти все совершенные числа (С++) - C++
Найдите все совершенные числа находящиеся в интервале (900;9000)


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru