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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 38, средняя оценка - 4.97
aptik
1 / 1 / 0
Регистрация: 06.04.2009
Сообщений: 6
#1

Поиск совершенного числа N через цикл for - C++

14.05.2009, 21:23. Просмотров 6116. Ответов 20
Метки нет (Все метки)

Сложить программу с помощью цикла for

Задание
Дано некоторое число N. Сложить программу поиска “совершенных” чисел меньших за N. “Совершенным” есть число, которое равно суме своих делителей, за исключением самого себя.

Помогите пожалуйста. Очень срочно надо. Заранее благодарен.
1
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.05.2009, 21:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поиск совершенного числа N через цикл for (C++):

Поиск совершенного числа в массиве - C++
Необходимо найти в массиве все совершенные числа в диапазоне от n1 до n2. Будем учитывать, что массив уже заполнен. //задаём диапазон...

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

Найти среднее арифметическое элементов массива расположенных после последнего совершенного числа - C++
Помогите пожалуйста составить программу. Из положительных значений двух целочисленных массивов различной размерности сформировать общий...

Как реализовать разделение числа на цифры через цикл? - C++
Как реализовать через цикл в C разделение числа на цифры и записать их в отдельные переменные, для последующих действий с ними

Сделать через цикл for. Написать программу возведения натурального числа в квадрат - C++
Написать программу возведения натурального числа в квадрат, используя следующую закономерность: 1^2=1 2^2=1+3 3^2=1+3+5 4^2=1+3+5+7...

Найти сумму цифр заданного числа без учёта последней цифры через цикл while - C++
У меня есть код программы: #include "stdafx.h" #include "stdio.h" void main() { int n,s; printf("n= \n"); scanf("%d",&n); ...

20
AncinetHero
49 / 49 / 3
Регистрация: 22.05.2011
Сообщений: 326
22.05.2012, 11:27 #16
Потому что в коде у вас j < i
0
Shman
3 / 3 / 2
Регистрация: 30.04.2012
Сообщений: 212
22.05.2012, 12:47 #17
valeriikozlov, Про верхней границе 100000 (сто тысяч) твоя программа находит 4 числа и зависает. При 99999 нет.
0
valeriikozlov
Эксперт С++
4674 / 2500 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
22.05.2012, 13:39 #18
Цитата Сообщение от Shman Посмотреть сообщение
valeriikozlov, Про верхней границе 100000 (сто тысяч) твоя программа находит 4 числа и зависает. При 99999 нет.
Это не моя программа, а Ваша (мной подправленная до рабочего состояния).
Число 8128, порграмма находит примерно за 2-3 секунды.
И при 99999 и при 100000 работает очень долго (я не дождался результата).
А вот для быстрого поиска совершенных чисел из диапазона от 0 до 5000000000000000000 (5*10^18) можете воспользоваться кодом, который описан в посте № 12 этой темы.
0
Shman
3 / 3 / 2
Регистрация: 30.04.2012
Сообщений: 212
22.05.2012, 15:37 #19
Еще меня интересует что елают циклы. Я понимаю так:
C++
1
2
3
4
5
6
7
8
9
10
11
  for (i=1; i<=gr; i++) // Совершенное число является натуральныи, 
                         // счетчик устанавливаем от 1 до верхней границы   
   {         
    sum=0; // Обнуляем сумму
  for (j=1; j<i; j++) // Стечик делителей
     {
      if (i%j==0) // Если остаток деления числа на делитель равен 0, то...
       {sum=sum+j;} // к sum=0 прибавляется последний возможный делитель 
    }
     if (sum==i) // Если сумма равна числу из интервала, то..
     { printf ("\n %d.", i); }  // напечатать это число
Добавлено через 1 час 8 минут
Цитата Сообщение от valeriikozlov Посмотреть сообщение
Это не моя программа, а Ваша (мной подправленная до рабочего состояния).
Число 8128, порграмма находит примерно за 2-3 секунды.
А при вводе 100000 думает 2 минуты и не находит ни одно числа.
0
EPOLO
0 / 0 / 1
Регистрация: 15.12.2015
Сообщений: 3
16.12.2015, 20:49 #20
лови программку)На самом деле очень все легко.Только сделал чуть по другому. Вводишь число и программа проверяет совершенное или нет.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
void main()
{
    int n,i,sum=1;
    printf("введите число:");
    scanf("%d",&n);
    for(i=2;i<=n/2;i++)
    {
        if(!(n%i))
            sum+=i;
    }
    if(sum==n)
        printf("число совершенное");
    else 
        printf("нет");
}
0
Dimension
Dimension
570 / 439 / 135
Регистрация: 08.04.2014
Сообщений: 1,709
Завершенные тесты: 1
16.12.2015, 20:52 #21
EPOLO, на самом деле он ее уже лет 6 назад решил
0
16.12.2015, 20:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.12.2015, 20:52
Привет! Вот еще темы с ответами:

произведение через "одиного" между min и max, и через 1 цикл - C++
пацаны нужна ваша помощь..&lt;censored&gt; это программирование уже..времени мало совсем..помогите с такой &lt;censored&gt;.. задание.вычислить...

Вложенный цикл и списки. Поиск одинаковых - C++
MNOZ *per(MNOZ *S1, MNOZ *S2, MNOZ *S3) //Пересечение { MNOZ *cur1=NULL; for(; S1!=NULL; S1-&gt;next) for(; S2!=NULL;...

Поиск числа в двумерном массиве (бинарный поиск) - C++
Произвожу поиск элемента в массиве двумя способами: линейным(последовательным) поиском и бинарным(двоичным). Первый работает на ура. Второй...

Поиск совершенного числа - VBA
Здравствуйте ! Подскажите как найти совершенное число , т.е. число равное сумме делителей ( 6=1+2+3 или 28=1+2+4+7+14) . Те. ввести любое...


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

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

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