Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
2 / 2 / 0
Регистрация: 07.06.2016
Сообщений: 63
1

В цикле вывести на экран все совершенные числа

14.07.2016, 00:27. Показов 1787. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
продолжение того же задания, но уже с дополнением... Создать функцию, которая будет иметь 1-н целочисленный параметр А, и в качестве своего значения возвращать true/false если число А совершенное.
После задания с клавиатуры границ диапазона [a;b] в цикле вивести на екран все совершенные числа...

в результате доходит до 8128, останавливается и не дает выйти из консоли... пробовал менять типы на long, не помогло...

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
#include <iostream>
using namespace std;
bool PerNum (int);
void main ()
{
    int num;
    cout << "Enten number: ";
    cin >> num;
    if (PerNum (num))
        cout << "Your number is perfect\n\n";
    else
        cout << "Your number isn't perfect\n\n";
 
    int a;
    int b;
    cout << "Enter range's numbers: ";
    cin >> a >> b;
 
    for (int i=a; i<=b; i++)
    {
        if (PerNum (i))
            cout << i << endl;
    }
        
    system ("pause");
}
bool PerNum (int a)
{
    int sum=0;
    for (int i=1; i<a; i++)
    {
        if (a%i==0)
            sum+=i;
    }
    if (sum==a)
        return true;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.07.2016, 00:27
Ответы с готовыми решениями:

Вывести на экран все совершенные числа, меньшие N
2. С клавиатуры вводится натуральное число N. Выдать на экран все совершенные числа, меньшие N. В...

Вывести все совершенные числа на экран и указать количество совершенных чисел меньших n
Дано натурально число n. Составить программу, для нахождения всех совершенных чисел меньших n....

Вывести все совершенные числа на экран и указать количество совершенных чисел меньше n
Дано некоторое число n. Составить программу для нахождения всех совершенных чисел меньших n....

вывести все совершенные числа.
На диапазоне от А до В вывести все совершенные числа. (Число совершенное,если оно равно сумме всех...

13
Заблокирован
14.07.2016, 05:20 2
и что такое компилируется?
C++
1
return sum==a;
0
2664 / 2239 / 240
Регистрация: 03.07.2012
Сообщений: 8,141
Записей в блоге: 1
14.07.2016, 05:48 3
А в чем проблема: summ==a булево, его и возвращаем. Почему в if(sum==a) можно, а в return нельзя? Другое дело, что совершенное число равно 1+сумма простых делителей без самого числа (а на всех) Но это уже математика, а не кодирование.

Советую ТС ознакомиться с Проверка числа на простоту и разложение на простые множители
0
Заблокирован
14.07.2016, 05:52 4
Цитата Сообщение от zer0mail Посмотреть сообщение
Почему в if(sum==a) можно
а вот не уверен, что можно, если sum!=a чего return?
0
2664 / 2239 / 240
Регистрация: 03.07.2012
Сообщений: 8,141
Записей в блоге: 1
14.07.2016, 06:11 5
false, естестественно (как и для if'a)
0
Заблокирован
14.07.2016, 06:33 6
а попробовать? 2 перфектное число?
"warning C4715: PerfNum: значение возвращается не при всех путях выполнения"
0
Модератор
Эксперт С++
13505 / 10756 / 6411
Регистрация: 18.12.2011
Сообщений: 28,712
14.07.2016, 07:10 7
Цитата Сообщение от Техник228 Посмотреть сообщение
останавливается и не дает выйти из консоли
В отладчике поставьте останов и убедитесь, что программа добросовестно перебирает числа из заданного диапазона.
Цитирую Википедию:
Совершенные числа образуют последовательность[1]:

6,
28,
496,
8128,
33 550 336,
8 589 869 056,
Так что, после 8128 следующее только 33550336

Да, еще в программе ляп:
Цитата Сообщение от Техник228 Посмотреть сообщение
C++
1
2
if (sum==a) 
   return true;
a. Что возвращается, если sum не равно a?
b. Опять масло масляное!
C++
1
return (sum==a);
0
2 / 2 / 0
Регистрация: 07.06.2016
Сообщений: 63
14.07.2016, 09:18  [ТС] 8
zer0mail, можно тогда поправку к коду с т.з. математики?

Ко всем: по вашим словам, если поменять
C++
1
2
if (sum==a)
        return true;
на
C++
1
return (sum==a);
все заработает корректно... но компилятор так и стопорится на 8128. даже если вторую границу диапазона ввести больше 33 550 336.
0
Модератор
Эксперт С++
13505 / 10756 / 6411
Регистрация: 18.12.2011
Сообщений: 28,712
14.07.2016, 09:29 9
Программа не стопорится, а просто ООООчень долго считает.
Даже на диапазон 33550330 - 33550340 на моем компьютере уходит 5 секунд.
0
Заблокирован
14.07.2016, 09:31 10
PerfNum(33550336) нормально отрабатывает, а следующее ~8.6Г в long не влезет
0
Модератор
Эксперт С++
13505 / 10756 / 6411
Регистрация: 18.12.2011
Сообщений: 28,712
14.07.2016, 09:56 11
MansMI, Вы не правы.
Цитирую справочник MS:
INT_MAX 2147483647 Maximum (signed) int value
0
Заблокирован
14.07.2016, 10:09 12
в чем не прав, 2.14>8.58 ?
0
Модератор
Эксперт С++
13505 / 10756 / 6411
Регистрация: 18.12.2011
Сообщений: 28,712
14.07.2016, 10:42 13
MansMI,
2147483647 явно больше 33550340
0
Заблокирован
14.07.2016, 10:47 14
кто спорит?
Цитата Сообщение от MansMI Посмотреть сообщение
PerfNum(33550336) нормально отрабатывает, а следующее ~8.6Г в long не влезет
0
14.07.2016, 10:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.07.2016, 10:47
Помогаю со студенческими работами здесь

Цикл: Вывести все совершенные числа и все пары дружественных чисел из промежутка [2, n].
Число називається досконалим, якщо воно дорівнює сумі всіх своїх дільників, крім самого цього числа...

Для заданного натурального числа N вывести в столбик все совершенные числа меньшие N c++
Для заданного натурального числа N вывести в столбик все совершенные числа меньшие N. Совершенное...

Найдите все совершенные числа от 1 до 1000 и выведите их на экран
Число совершенно,если она равна сумме всех своих делителей кроме самого себя.Пример:6=1+2+3 найдите...

Найдите все совершенные числа от 1 до 1000 и выведите их на экран
Число совершенно,если она равна сумме всех своих делителей кроме самого себя.Пример :6=1+2+3...

Вывести все совершенные числа в диапазоне от 1 до N
Вроде все сделал правильно, но не проходит два последних теста (informatics.ru), что может быть не...

Вывести все совершенные числа, меньшие n
Дано натуральное число n. Вывести все совершенные числа, меньшие n (число является совершенным,...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru