Визначення
Позитивне ціле число n
- це практичне число (OEIS-послідовність A005153 ), якщо всі менші додатні цілі числа можна представити у вигляді сум різних дільників n
.
Наприклад, 18
це практичне число: його дільники дорівнюють 1, 2, 3, 6, 9 і 18, а інші додатні цілі числа, менші за 18, можуть утворюватися так:
4 = 1 + 3 5 = 2 + 3 7 = 1 + 6
8 = 2 + 6 10 = 1 + 9 11 = 2 + 9
12 = 3 + 9 = 1 + 2 + 9 = 1 + 2 + 3 + 6
13 = 1 + 3 + 9 14 = 2 + 3 + 9 15 = 6 + 9
16 = 1 + 6 + 9 17 = 2 + 6 + 9
Але 14
це не є практичним числом: його дільники - 1, 2, 7 і 14, і підмножини їх немає, що додає до 4, 5, 6, 11, 12 або 13.
Виклик
Напишіть програму, функцію або дієслово, яке приймає за вхід додатне ціле число x
і повертає або друкує x- й практичний номер, індексований від 1 для узгодження з OEIS. Ваш код повинен бути достатньо ефективним, щоб він міг обробляти вводи до 250000 менш ніж за дві хвилини на розумному настільному комп’ютері. (Зверніть увагу: моя реалізація посилань на Java управляє 250000 менш ніж за 0,5 секунди, а моя контрольна реалізація в Python управляє ним за 12 секунд).
Тестові справи
Input Expected output
1 1
8 18
1000 6500
250000 2764000
1000000 12214770
3000000 39258256