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
)Odpowiedzi:
Właściwie 11 bajtów
Wypróbuj online!
Nie obejmuje 1.
Wyjaśnienie:
źródło
Galaretka , 12 bajtów
Wypróbuj online!
Jak to działa
źródło
Brachylog ,
2119 bajtów1 bajt dzięki Fatalize dla inspiracji kolejnego 1 bajtu.
Wypróbuj online!
Zajmuje tutaj około 6 sekund.
Poprzednie 21-bajtowe rozwiązanie
Wypróbuj online!
Zajmuje tutaj około 6 sekund.
źródło
100^:4reP$pot^<=P@w\
jest o jeden bajt krótszy, ale mniej elegancki.Haskell, 53 bajty
Nie mam teraz czasu na grę w golfa, ale chcę zilustrować metodę sprawdzania, czy
n
jest dość płynna: pomnóż liczby od1
dosqrt(n)
(tj. Oblicz silnię), podnieś produkt do dużej mocy i sprawdź, czy wynik jest wielokrotnościąn
.Zmień na
r=[2..10^4]
jeśli1
nie powinno być wyprowadzane.źródło
8
wymaga).Pyth ,
1615 bajtów1 bajt dzięki Jakube.
Wypróbuj online!
źródło
*dd
tą funkcją?05AB1E,
161413 bajtówWyjaśnienie
Wypróbuj online
źródło
4°
jest skrótem od 10000.Matlab,
5857565248 bajtówDla każdej liczby sprawdza, czy wszystkie czynniki do kwadratu nie są większe niż sama liczba. Jeśli tak, wyświetla ten numer.
Dzięki @Luis Mendo za grę w golfa
Inne podejście (50 bajtów):
Dla każdej liczby oblicza, czy jej maksymalny współczynnik pierwszy podniesiony do kwadratu jest mniejszy niż sama liczba. Następnie używa go do indeksowania.
źródło
for k=4:1e4,if factor(k).^2<=k,disp(k);end;end
SQF ,
252227220Standardowy format skryptu:
Uwzględnij preprocesor w łańcuchu kompilacji podczas wywoływania, np .:
execVM "FILENAME.sqf"
call compile preprocessFile "FILENAME.sqf"
Zapisuje to w dzienniku czatu systemowego, który jest najbliższym wyjściem SQF
źródło
C, 113 bajtów
Ideone to!
źródło
Pyke,
131211 bajtówWypróbuj tutaj!
(Link zwiększa się tylko do 10 ^ 3, ponieważ przekroczono limit 10 ^ 4)
źródło
J, 20 bajtów
Wynik:
Wypróbuj online tutaj.
źródło
Python 2, 90 bajtów
Ideone to!
źródło
R, 97 bajtów
bez golfa
źródło
Pyth, 12 bajtów
Nie obejmuje 1.
źródło