Jeśli dodatnia liczba całkowita ma (ściśle) mniej czynników pierwszych (bez liczenia wielokrotności) niż jej następca i jej poprzednik, nazwiemy ją liczbą złą .
Innymi słowy, i , w którym to liczba unikalnych głównych czynników .
Zadanie
Możesz wybrać jeden z następujących formatów We / Wy:
- Weź liczbę całkowitą i wyślij liczbę o niskiej wartości. W przypadku wybrania tego, może być indeksowane 0 lub 1.
- Weź dodatnią liczbę całkowitą i wyślij pierwsze liczby N o niskiej liczbie czynników.
- Wydrukuj sekwencję w nieskończoność.
Możesz przyjmować dane wejściowe i dostarczać dane wyjściowe za pomocą dowolnej standardowej metody , w dowolnym języku programowania , zwracając uwagę, że te luki są domyślnie zabronione. To jest kod golfowy, więc wygrywa najkrótsza przesłanka zgodna z zasadami.
Nie dołączę osobnych przypadków testowych, ponieważ metody konkurowania są różne, ale możesz odwołać się do pierwszych 100 terminów tej sekwencji, czyli OEIS A101934 :
11, 13, 19, 23, 25, 27, 29, 37, 41, 43, 47, 49, 53, 59, 61, 64, 67, 71, 73, 79, 81, 83, 89, 97, 101, 103, 107, 109, 113, 121, 125, 131, 137, 139, 149, 151, 155, 157, 163, 167, 169, 173, 179, 181, 191, 193, 197, 199, 211, 221, 223, 227, 229, 233, 239, 241, 243, 251, 259, 263, 265, 269, 271, 277, 281, 283, 289, 293, 307, 309, 311, 313, 317, 331, 337, 341, 343, 347, 349, 353, 359, 361, 365, 367, 371, 373, 379, 383, 389, 397, 401, 407, 409, 419, 421, 431, 433, 439, 441, 443
Na przykład występuje w tej sekwencji, ponieważ (5), (2 i 13) i (2 i 3), więc i .
n =
przed każdą wartością?Odpowiedzi:
Brachylog , 21 bajtów
Wypróbuj online!
Drukuje nieskończenie.
Wyjaśnienie
źródło
Galaretka ,
1312 bajtówWyświetla pierwsze n liczb o niskiej liczbie czynników.
Wypróbuj online!
Jak to działa
źródło
Python 2 ,
123119 bajtówWypróbuj online!
źródło
MATL ,
262422 bajtówDrukuje sekwencję w nieskończoność.
Wypróbuj online!
Wyjaśnienie
źródło
Łuska , 22 bajty
Drukuje sekwencję w nieskończoność, wypróbuj ją online lub wyświetl pierwszą N !
Alternatywnie
§oΛ>←t
można użyć zamiastΠtSM<←
.Wyjaśnienie
źródło
Pyth , 14 bajtów
Wypróbuj tutaj!
Początkowo była to sugestia dotycząca odpowiedzi Dopappa , ale powiedzieli mi, żebym opublikował ją osobno.
Jak to działa?
źródło
Haskell,
10586 bajtówDzięki @Wheat Wizard, @Bruce Forte i @Laikoni za uratowanie 19 bajtów.
[n|n<-[2..],d n<d(n-1),d n<d(n+1)] d x=[1|n<-[1..x],x`rem`n<1,all((>0).rem n)[2..n-1]]
źródło
rem
==0
i/=0
można je zastąpić odpowiednio za pomocą<1
i>0
.let
definiowaniad
jako funkcji pomocniczej jest w porządku (patrz przewodnik po regułach gry w golfa ). Równieżsum
może być pominięty, porównanie działa tak samo na listach. 86 bajtów: Wypróbuj online!Oktawa ,
878379 bajtówPodziękowania dla szarlatana @Cows za uratowanie bajtu i podziękowania @Luis Mendo za uratowanie
trzechsześciu bajtów!Drukuje sekwencję w nieskończoność.
Wypróbuj online!
73 bajty z wiodącymi
n =
przed każdą wartością:Wypróbuj online!
źródło
f
może stać sięf=@(n)length(unique(factor(n)))
o jeden bajt mniej.05AB1E ,
1413 bajtówWysyła n-tą liczbę o niskiej liczbie czynników (1-indeksowana)
Wypróbuj online!
Wyjaśnienie
źródło
µ
, więc chyba wskażę moją alternatywę -N<N>Ÿ
może zastąpić3LN+Í
, jeśli to pomoże.®XŸN+
działa również. Lub0®X)N+
w takim przypadkuÀ
nie byłoby to konieczne. Niestety wszystkie kończą na tej samej liczbie bajtów.Pyth,
3025 bajtówTo jest mój pierwszy prawdziwy golf Pyth, więc wszelkie komentarze są bardzo mile widziane.
Ogromne podziękowania dla Xcodera!
Wyjaśnienie
TIO .
źródło
.f!-.ml{Pb}tZh
(drukuje pierwsze n) (.f
pobiera pierwsze n wartości, które spełniają warunek[1,2,3,...]
i używa zmiennejZ
,}tZh
generuje zakres liczb całkowitych[Z - 1 ... Z + 1]
,.m
zwraca listę elementów o minimalnej wartości funkcji (zb
),l{Pb
pobiera liczbę różnych dzielników,-
odrzucaZ
z listy,!
stosuje logiczną negację)h
is+1
,t
is-1
, whileK
jest zmienną, która jest przypisywana bez=
. Na przykładK4
przypisujeK
do4
. Następnie możesz uzyskać do niego dostęp za pomocąK
.JavaScript (ES6), 94 bajty
Zwraca N-ty czynnik o niskiej wartości, indeksowany 0.
Wypróbuj online!
W jaki sposób?
Najpierw definiujemy funkcję P (), która zwraca liczbę unikatowych czynników pierwszych danej liczby całkowitej.
Kod owijania brzmi teraz:
źródło
Japt ,
292726 bajtówNie do końca zadowolony z tego, ale przynajmniej jest lepszy niż moja pierwsza próba, która miała ponad 40 bajtów!
Zwraca
N
liczbę th w sekwencji, indeksowaną 1.Spróbuj
Wyjaśnienie
Domniemane wprowadzenie liczby całkowitej
U
.Zwraca pierwszą liczbę całkowitą,
X
która zwraca wartość true po przejściu przez następującą funkcję.Przypisz tablicę
[-1,0,1]
doX
.Przekaż każdy element tej tablicy przez funkcję, która najpierw dodaje bieżącą wartość
X
.Uzyskaj długość (
Ê
) niepowtarzalnych (â
) czynników pierwszych (k
) wyniku.Obróć wynikowy układ o jeden w prawo.
Pop (
o
) ostatni element zX
i sprawdź, czy wszystkie pozostałe elementy są większe od niego.Jeśli tak, zmniejsz
U
i sprawdź, czy jest równe 0.źródło
Python 3 , 97 bajtów
Teoretycznie drukuje sekwencję w nieskończoność. W praktyce
g
ostatecznie przekracza limit rekurencji.Wypróbuj online!
źródło
C (gcc) , 126 bajtów
Wypróbuj online!
źródło
Czysty ,
130123117 bajtówOdpowiada nieskończonej liczbie terminów sekwencji. Ponieważ wszystkie są zagnieżdżone, nie można bardzo dobrze korzystać z redukcji wykresów, dlatego jest dość powolny, nawet przy tak złym algorytmie.
Wypróbuj online!
źródło
APL NARS, 124 bajty, 62 znaki
Powinien zwracać odpowiedź do 1E4, a następnie zwracać błąd -1; przypuszcza, że 9..10x instrument ma wystarczającą liczbę odpowiednich liczb; test:
źródło