
Найти все совершенные числа до 100000. Совершенное число - это такое число, которое равно сумме
всех своих делителей, кроме себя самого. Например, число 6 является совершенным, т.к. кроме себя самого делится на числа 1, 2 и 3, которые в сумме дают 6.

Ответы на вопрос

Внимание! Если программа не работает, обновите версию!
begin
for var i:=1 to 100000 do begin
var s:=0;
for var j:=1 to i div 2 do
if i mod j=0 then s+=j;
if s=i then Print(i)
end;
Writeln
end.
Результат
6 28 496 8128



begin
readln(n);
for i := 1 to n-1 do
begin
s:=0;
for j := 1 to (i div 2) do
if i mod j=0 then s:=s+j;
if s=i then write(i,' ');
end;
end.



Совершенные числа довольно редки и возрастают быстро по величине. Некоторые из них известны с древних времен, но всего известно лишь несколько первых совершенных чисел. Один из способов найти совершенные числа — это использовать формулу, которая связывает совершенные числа с простыми числами Мерсенна.
Совершенное число вида 2^(p-1) * (2^p - 1) называется совершенным числом Мерсенна, где p и (2^p - 1) являются простыми числами.
Например, когда p = 2, получаем число Мерсенна M2 = 2^(2-1) * (2^2 - 1) = 2 * (4 - 1) = 6, которое является совершенным числом.
Таким образом, для поиска совершенных чисел до 100000 нам нужно найти все простые числа p, для которых (2^p - 1) также является простым числом. Затем умножим каждое найденное Mersenne-число на 2^(p-1) и получим совершенное число.
Давайте напишем код на Python для решения этой задачи:
pythondef is_prime(num):
if num <= 1:
return False
for i in range(2, int(num**0.5) + 1):
if num % i == 0:
return False
return True
def find_perfect_numbers(limit):
perfect_numbers = []
for p in range(2, limit):
if is_prime(p):
mersenne_number = 2**p - 1
if is_prime(mersenne_number):
perfect_number = 2**(p-1) * mersenne_number
if perfect_number <= limit:
perfect_numbers.append(perfect_number)
return perfect_numbers
limit = 100000
perfect_numbers = find_perfect_numbers(limit)
print(perfect_numbers)
Пожалуйста, обратите внимание, что поиск совершенных чисел может занять некоторое время, поскольку совершенные числа редки и их количество возрастает с увеличением предела поиска.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili