Другие языки программирования и технологии

Помогите пожалуйста решить задачку на языке с++ С ув. Юля

Число называется совершенным, если сумма всех его делителей равна ему самому. Написать функцию, которая выводит все такие числа в введенном диапазоне (границы диапазона функция принимает в качестве параметров).
Даже уже девятое совершенное число очень большое. Оно потребует специальных библиотек для работы с очень большими числами, long long-а ему не хватит.

Сделайте проще. Возьмите первые 10 совершенных чисел из Википедии или с https://oeis.org/A000396 . Засуньте их десятичные представления в std::string-и, используя ведущие нули (чтоб кол-во знаков в каждом числе было одинаково).
Строчки сравнивайте лексикографически. Будет намного эффективнее.
ПЦ
Павел Цымбала
23 024
Лучший ответ
Игорь Брейкин а вы можете написать мне приблизительно как писать функцию
#include "<"iostream">" //уберите ""
#include "<"ctime">"
#include "<"cstdlib">"

using namespace std;

const int NUMBER_OF_ELEMENTS_ALLOWED = 100;

void fulfillArray(int *numbersArray);
void detectPerfectNumber(int number);

int main()
{
int numbersArray[NUMBER_OF_ELEMENTS_ALLOWED];
fulfillArray(numbersArray);
for(int i = 0; i < NUMBER_OF_ELEMENTS_ALLOWED; i++) {
detectPerfectNumber(numbersArray[i]);
}

return 0;
}

void fulfillArray(int *numbersArray) {
srand(time(NULL));
for(int i = 0; i < NUMBER_OF_ELEMENTS_ALLOWED; i++) {
numbersArray[i] = rand() % 1000000;
cout << "\n" << "numbersArray[" << i << "] = " << numbersArray[i];
}
}

void detectPerfectNumber(int number) {
int numberMade = 0;
for(int i = number - 1; i > 0; i--) {
if(number % i == 0) numberMade += i;
}

if(number == numberMade) cout << "\n" << "number " << number << " is Perfect!";

ЗЫ тут НЕ диапазон, а случайный набор элементов из 100 чисел - для красоты! Вы можете переделать сами под диапазон - это не трудно !
Aliyev.sergey
Aliyev.sergey
80 035
Серафим Галушка NUMBER_OF_ELEMENTS_ALLOWED - я тебя боюсь
Игорь Брейкин пожалуйста переделайте с параметрами (int a, int b)