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

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

Войти
Регистрация
Восстановить пароль
 
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,912
Записей в блоге: 1
#1

Алгоритм(Найти максимальное совершенное число, которое в то же время меньше введенного N) - C++

14.07.2012, 16:08. Просмотров 1057. Ответов 7
Метки нет (Все метки)

Найти максимальное совершенное число, которое в то же время меньше введенного N

Справка:

Число называется совершенным, если оно равно сумме всех своих делителей за исключением его самого

НЕ могу понят в чем суть задачи
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.07.2012, 16:08     Алгоритм(Найти максимальное совершенное число, которое в то же время меньше введенного N)
Посмотрите здесь:

Найти максимальное число которое может быть представлено как сумма степеней 2, 3 и 4 простых чисел - C++
Найти максимальное число, меньшее заданного, которое может быть представлено как сумма степеней 2, 3 и 4 простых чисел (минимальное такое...

Найти максимальное число, которое расположено ниже главной и ниже обратной диагонали - C++
Дана квадратная матрица целых чисел размером N<=12. Заполнить матрицу случайными числами от 0 до 100. Найти максимальное число,...

Найти максимальное число, которое расположено ниже главной и ниже обратной диагонали - C++
Дана квадратная матрица целых чисел размером N<=12. Заполнить матрицу случайными числами от 0 до 100. Найти максимальное число,...

Определить ближайшее нечетное число меньше заданного числа N, которое делится на 15 с остатком 6 - C++
задание такое: Определить ближайшее нечетное число меньше заданного числа N, которое делится на 15 с остатком 6. вот код-BORLANDC ...

Определить ближайшее нечетное число меньше заданного числа N, которое делится на 15 с остатком 6 - C++
Определить ближайшее нечетное число меньше заданного числа N, которое делится на 15 с остатком 6

Напечать число, которое меньше максимального элемента,но больше всех остальных элементов - C++
Составить программу,которая в массиве A находит второе по величине число(вывести на печать число,которое меньше максимального элемента...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MAnton
23 / 23 / 1
Регистрация: 21.04.2011
Сообщений: 139
14.07.2012, 16:28     Алгоритм(Найти максимальное совершенное число, которое в то же время меньше введенного N) #2
Пишешь функцию которая возвращает указатель на массив делителей числа.
C++
1
int* Delitel(int* mas, int M);
потом тебе в цикле надо пройти все числа от N-1 до 2. для каждого числа вызываешь функцию Delitel, получаешь массив чисел, находишь сумму этого массива, если сумма равна числу то выходишь из цикла, если нет то на идешь на следующий шаг цикла
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,912
Записей в блоге: 1
14.07.2012, 17:31  [ТС]     Алгоритм(Найти максимальное совершенное число, которое в то же время меньше введенного N) #3
Цитата Сообщение от MAnton Посмотреть сообщение
Пишешь функцию которая возвращает указатель на массив делителей числа.
C++ (Qt)
1
int* Delitel(int* mas, int M);
потом тебе в цикле надо пройти все числа от N-1 до 2. для каждого числа вызываешь функцию Delitel, получаешь массив чисел, находишь сумму этого массива, если сумма равна числу то выходишь из цикла, если нет то на идешь на следующий шаг цикла
малеха не понял
MAnton
23 / 23 / 1
Регистрация: 21.04.2011
Сообщений: 139
14.07.2012, 18:12     Алгоритм(Найти максимальное совершенное число, которое в то же время меньше введенного N) #4
что конкретно не понятно?
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,912
Записей в блоге: 1
14.07.2012, 18:15  [ТС]     Алгоритм(Найти максимальное совершенное число, которое в то же время меньше введенного N) #5
Цитата Сообщение от MAnton Посмотреть сообщение
что конкретно не понятно?
как создать функции, и как проверять
Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
14.07.2012, 18:35     Алгоритм(Найти максимальное совершенное число, которое в то же время меньше введенного N) #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int main () {
   unsigned long int N,
                     summ,
                     perfectNumber = 0;
   
   std::cout << "Enter N: ";
   std::cin >> N;
   
   for ( unsigned long int i = 2; i < N; i++ ) {
      summ = 0;
      
      for ( unsigned long int j = 1; j < i; j++ )
         if ( i % j == 0 )
            summ += j;
      
      if ( summ == i )
         perfectNumber = i;
   }
   
   std::cout << perfectNumber << std::endl;
   
   return 0;
}
MAnton
23 / 23 / 1
Регистрация: 21.04.2011
Сообщений: 139
14.07.2012, 18:43     Алгоритм(Найти максимальное совершенное число, которое в то же время меньше введенного N) #7
Что бы найти максимальное совершенное число, тебе надо перебрать все числа от N-1 до 2. Перебирать числа нужно с конца, потому что первое попавшееся совершенное число будет максимальным совершенным числом которое меньше N. На каждой итерации цикла будем использовать вспомогательную функцию, которая будет для каждого числа формировать массив делителей эта функция будет выглядеть примерно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int* Delitel(int *mas, int M){
    delete []mas;
    mas=new int[M/2];
    int i=M/2;
    int j=0;
    while(i>=2){
        if(M%i==0){
            mas[j]=i;
            j++;
        }
        i--;
    }
    return mas;
}
потом вычисляешь сумму этого массива если она не равна числу то идем дальше, если равна то выходим из цикла.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.07.2012, 18:44     Алгоритм(Найти максимальное совершенное число, которое в то же время меньше введенного N)
Еще ссылки по теме:

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

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

Зная квалификацию игроков определить общее число подтягиваний, которое совершат оба игрока за время игры - C++
Пусть квалификация первого игрока равна A, а квалификация второго равна B. Обозначим количество подтягиваний в подходе для первого игрока...

Написать алгоритм, который найдет максимальное число в заданном массиве - C++
Нужно написать алгоритм который найдет max число в заданном массиве. C N=4


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

Или воспользуйтесь поиском по форуму:
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
14.07.2012, 18:44     Алгоритм(Найти максимальное совершенное число, которое в то же время меньше введенного N) #8
Мой кривенький вариант
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
#include <iostream> 
using namespace std; 
int main() 
{   
    setlocale(0, "rus");
    int N; 
    int sum = 0; 
    int max = 0;
    cout << "Введите N " << endl; 
    cin >> N; 
 
    for ( int i = 2; i < N; i++)  
    { 
        for ( int j = 1; j <= ( i / 2); j++) 
        { 
            if( i % j == 0) 
                sum += j;  // считаем сумму делителей
        } 
        if(sum == i)   // если сумма равна
        {
            cout << "Совершенное число " << i <<  endl; 
           if( max < i ) 
               max = i;   // максимальное
        } 
        sum = 0; // сбрасываем сумму
        
    }  
 
    if( max == 0) // если макс 0 нет чисел
        cout << "Нет совершенных чисел " << endl; 
    else 
        cout << "Максимальное из совершенных " << max << endl;
}
Yandex
Объявления
14.07.2012, 18:44     Алгоритм(Найти максимальное совершенное число, которое в то же время меньше введенного N)
Ответ Создать тему
Опции темы

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