Definicja
Dodatnia liczba całkowita njest liczbą praktyczną (sekwencja OEIS A005153 ) i wszystkie mniejsze liczby całkowite dodatnie mogą być reprezentowane jako sumy różnych dzielników n.
Na przykład 18jest liczbą praktyczną: jej dzielniki to 1, 2, 3, 6, 9 i 18, a inne dodatnie liczby całkowite mniejsze niż 18 można utworzyć w następujący sposób:
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
Ale 14to nie jest liczba praktyczna: jej dzielniki to 1, 2, 7 i 14 i nie ma ich podzbioru, który dodaje 4, 5, 6, 11, 12 lub 13.
Wyzwanie
Napisz program, funkcję lub czasownik, który przyjmuje jako dane wejściowe dodatnią liczbę całkowitą xi albo zwraca, albo wypisuje x- tą liczbę praktyczną, indeksowaną od 1 dla zgodności z OEIS. Twój kod musi być wystarczająco wydajny, aby mógł obsługiwać dane wejściowe do 250000 w mniej niż dwie minuty na rozsądnym komputerze stacjonarnym. (Uwaga: moja implementacja referencyjna w Javie zarządza 250000 w mniej niż 0,5 sekundy, a moja referencyjna implementacja w Pythonie zarządza nią w 12 sekund).
Przypadki testowe
Input Expected output
1 1
8 18
1000 6500
250000 2764000
1000000 12214770
3000000 39258256