Привлекательные числа
Привлекательные числа (Attractive Numbers)
Этот пример показывает реализацию алгоритма для поиска привлекательных чисел от 1 до 120.
Введение
Алгоритм «привлекательных чисел» — это любопытная математическая задача, заключающаяся в определении таких натуральных чисел, сумма простых множителей которых является простым числом.
Что такое факторизация?
Каждое натуральное число можно представить в виде произведения простых чисел (факторов). Например:
- Число 12 имеет простые множители , или запись с учётом степеней — .
Функция factor
в Julia раскладывает входное число именно так.
Что значит число – “привлекательное”?
Число считается привлекательным, когда сумма всех его уникальных простых множителей (без учета степени) является простым числом.
Поясним:
- Для числа 12: факторизация → [2, 3] ⇒ сумма = 2 + 3 = 5.
- Так как 5 — простое ⇒ число 12 — привлекательное.
Нам нужно найти все такие числа в диапазоне от 1 до 120.
Решение задачи
Установка требуемого пакета
import Pkg; Pkg.add("Primes")
Подключение модуля Primes
. Он предоставляет функции работы с простыми числами, например, isprime()
проверяет, является ли число простым
using Primes
Функция isattractive(n)
принимает целое положительное число n
, затем:
-
factor(n)
— получаем словарь простых делителей со степенями -
values(...)
— берём только значения (степени игнорируем) -
sum(...)
— складываем значения -
isprime(...)
— проверяем, простая ли эта сумма?
function isattractive(n)
return isprime(sum(values(factor(n))))
end
Функция printattractive(m, n)
:
-
принимает два аргумента - границы диапазона от
m
доn
-
вызывает фильтрацию массива m:n с использованием функции
isattractive()
-
выводит красиво отформатированный список чисел через
println()
function printattractive(m, n)
println("Привлекательные числа от $m до $n:\n", filter(isattractive, m:n))
end
Запуск вычислений, вызывается созданная выше функция с заданным диапазоном
printattractive(1, 120)
Заключение
На данном примере мы изучили, как решить интересную математическую задачу про "привлекательные" числа с использованием возможностей языка программирования Julia. Мы:
- Научились применять библиотеку
Primes
для работы с простыми числами; - Использовали встроенную функцию
factor()
изBase.Math
(часть стандартной библиотеки); - Написали функцию, которая проверяет, является ли число привлекательным;
- Реализовали удобный способ отображения результата в терминале.
Подобный подход демонстрирует элегантность и читаемость кода на языке Julia, особенно при сочетании мощных встроенных средств и лаконичного синтаксиса.
Пример разработан с использованием материалов Rosetta Code