Найти тему

057 Алгоритм расчета совершенных чисел

Наткнулся на просторах YouTube на видео объясняющее, что такое совершенные числа и как их считать:

Что такое совершенные числа? #егэ2023 #математика #школа #математикапрофиль2023

Освежим знания в Википедии:

Соверше́нное число́ (др.-греч. ἀριθμὸς τέλειος) — натуральное число, равное сумме всех своих собственных делителей (то есть всех положительных делителей, отличных от самого́ числа). Например, число 6 равно сумме своих собственных делителей 1 + 2 + 3. Это понятие было введено пифагорейцами в VI веке до н. э.; согласно их нумерологической мистике, совпадение числа с суммой своих делителей свидетельствовало об особом совершенстве такого числа.

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

Попробуем реализовать поиск совершенных чисел в Go:

Go Playground - The Go Programming Language

Функция isPerfectNumber() принимает целое число num и возвращает булево значение, указывающее, является ли num совершенным числом. Для этого нужно найти все делители числа num и сложить их вместе. Если сумма делителей равна num, то num является совершенным числом.

Функция findPerfectNumbers() берет целое число limit и возвращает фрагмент всех совершенных чисел до limit включительно. Для этого она перебирает все целые числа до предела, вызывает для каждого из них функцию isPerfectNumber() и добавляет все совершенные числа в срез perfectNumbers.

В функции main() мы задаем предел 10000 и вызываем функцию findPerfectNumbers(), чтобы получить все совершенные числа до 10000 включительно. Затем мы выводим каждое совершенное число с помощью цикла и fmt.Println().

Наш алгоритм в пределе 10000 выдал следующие результаты:

Perfect numbers up to 10000: 6, 28, 496, 8128.

Очень похоже на результаты у автора видео и в других источниках :)

Отрицательных совершенных чисел не существует. По определению, совершенное число - это положительное целое число, равное сумме его собственных делителей. Поскольку все делители отрицательного целого числа отрицательны или равны 0, сумма его собственных делителей всегда будет отрицательна или равна 0, а значит, не может быть равна самому целому числу. Поэтому отрицательных совершенных чисел не существует.

Как известно, во Вселенной, человечеству до всего есть дело, было бы странно что до этой числовой задачи никто не докопался…

Математики открыли новый фронт в битве с древней числовой задачей