W arytmetyce liczba n-gładka , gdzie n jest daną liczbą pierwszą, jest matematycznie zdefiniowana jako dodatnia liczba całkowita, która nie ma czynników pierwszych większych niż n. Na przykład 42 ma 7-gładkość, ponieważ wszystkie jego czynniki pierwsze są mniejsze lub równe 7, ale 44 nie jest 7-gładkie, ponieważ ma również 11 jako czynnik pierwszy.
Zdefiniuj całkiem gładką liczbę jako liczbę bez czynników pierwszych większych niż jej pierwiastek kwadratowy. Tak więc listę całkiem gładkich liczb można sformułować w następujący sposób:
- (ZMIENIONO!) 1 jest dość gładką liczbą, z powodu całkowitego braku jakichkolwiek czynników pierwszych. (Pamiętaj, że w oryginalnej wersji tego pytania 1 zostało błędnie wykluczone z listy, więc jeśli wykluczysz je z wyników, nie zostaniesz źle oznaczony).
- Pomiędzy 4 (= 2 2 ) a 8 dość gładkie liczby są 2-gładkie, co oznacza, że mają 2 jako jedyny czynnik pierwszy.
- Pomiędzy 9 (= 3 2 ) a 24, dość gładkie liczby są 3-gładkie i mogą mieć 2s i 3s w swoich głównych faktoryzacjach.
- Pomiędzy 25 (= 5 2 ) a 48, całkiem gładkie liczby są 5-gładkie i mogą mieć 2s, 3s i 5s w swoich głównych faktoryzacjach.
- I tak dalej, aktualizowanie kryteriów za każdym razem, gdy zostanie osiągnięty kwadrat następnej liczby pierwszej.
Lista całkiem gładkich liczb jest stała i zaczyna się następująco: 1, 4, 8, 9, 12, 16, 18, 24, 25, ...
Twoim wyzwaniem jest napisanie kodu, który wyświetli wszystkie całkiem gładkie liczby do 10.000 włącznie (= 100 2 ). Musi istnieć co najmniej jeden separator (nie ma znaczenia, jakiego rodzaju - spacja, przecinek, nowa linia, cokolwiek) między każdą liczbą na liście i następną, ale nie ma znaczenia, jaki znak jest używany.
Jak zwykle wygrywa najniższa liczba bajtów - oczywiście, samo przedstawienie listy nie będzie dla ciebie zbyt korzystne. Powodzenia!
1)