Вопрос задан 29.07.2023 в 10:59. Предмет Информатика. Спрашивает Кузняк Никита.

Найти все совершенные числа до 100000. Совершенное число - это такое число, которое равно сумме

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

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Zelini Monika.
PascalABC.NET 3.4.0, сборка 1671 от 31.05.2018
Внимание! Если программа не работает, обновите версию!

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
0 0
Отвечает Крупин Никита.
Var i,j,s,n:integer;
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.
0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Совершенные числа довольно редки и возрастают быстро по величине. Некоторые из них известны с древних времен, но всего известно лишь несколько первых совершенных чисел. Один из способов найти совершенные числа — это использовать формулу, которая связывает совершенные числа с простыми числами Мерсенна.

Совершенное число вида 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 для решения этой задачи:

python
def 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)

Пожалуйста, обратите внимание, что поиск совершенных чисел может занять некоторое время, поскольку совершенные числа редки и их количество возрастает с увеличением предела поиска.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос