In der Arithmetik wird eine n-glatte Zahl , bei der n eine gegebene Primzahl ist, mathematisch als positive ganze Zahl definiert, die keine Primfaktoren größer als n hat. Zum Beispiel ist 42 7-glatt, weil alle Primfaktoren kleiner oder gleich 7 sind, aber 44 ist nicht 7-glatt, weil es auch 11 als Primfaktor hat.
Definieren Sie eine ziemlich glatte Zahl als eine Zahl ohne Primfaktoren, die größer sind als die eigene Quadratwurzel. Somit kann die Liste der ziemlich glatten Zahlen wie folgt formuliert werden:
- (EDITED!) 1 ist eine ziemlich glatte Zahl, da es keine Primfaktoren gibt. (Beachten Sie, dass in der Originalversion dieser Frage 1 fälschlicherweise aus der Liste ausgeschlossen wurde. Wenn Sie diese also von Ihren Ausgaben ausschließen, werden Sie nicht als falsch markiert.)
- Zwischen 4 (= 2 2 ) und 8 sind die hübschen glatten Zahlen 2-glatt, was bedeutet, dass sie 2 als einzigen Primfaktor haben.
- Zwischen 9 (= 3 2 ) und 24 sind die hübschen glatten Zahlen 3-glatt und können 2s und 3s in ihren primären Faktorisierungen haben.
- Zwischen 25 (= 5 2 ) und 48 sind die hübschen glatten Zahlen 5-glatt und können 2s, 3s und 5s in ihren Hauptfaktorisierungen haben.
- Und so weiter, indem Sie die Kriterien jedes Mal aktualisieren, wenn das Quadrat der nächsten Primzahl erreicht wird.
Die Liste der ziemlich glatten Zahlen ist fest und beginnt wie folgt: 1, 4, 8, 9, 12, 16, 18, 24, 25, ...
Ihre Herausforderung besteht darin, Code zu schreiben, der alle ziemlich glatten Zahlen bis einschließlich 10.000 (= 100 2) ausgibt ) . Zwischen jeder Zahl in der Liste und der nächsten muss mindestens ein Trennzeichen (es spielt keine Rolle, um welche Art es sich handelt - Leerzeichen, Komma, Zeilenvorschub usw.) stehen, es ist jedoch völlig unerheblich, welches Zeichen verwendet wird.
Wie üblich gewinnt die niedrigste Byteanzahl - offensichtlich ist es für Sie hier nicht von Vorteil, die Liste einfach auszugeben. Viel Glück!
1
)Antworten:
Eigentlich 11 Bytes
Probieren Sie es online!
Enthält nicht 1.
Erläuterung:
quelle
Gelee , 12 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
Brachylog ,
21 bis19 Bytes1 Byte danke an Fatalize, für die Inspiration eines weiteren 1 Byte.
Probieren Sie es online!
Dauert hier ungefähr 6 Sekunden.
Vorherige 21-Byte-Lösung
Probieren Sie es online!
Dauert hier ungefähr 6 Sekunden.
quelle
100^:4reP$pot^<=P@w\
ist ein Byte kürzer, aber weniger elegant.Haskell, 53 Bytes
Ich habe jetzt keine Zeit zum Golfen, aber ich möchte eine Methode zum Testen veranschaulichen, ob
n
es ziemlich flüssig ist: Multiplizieren Sie die Zahlen von1
bissqrt(n)
(dh Rechen einer Fakultät), das Produkt auf eine hohe Leistung zu erhöhen, und prüfen , ob das Ergebnis ist ein Vielfaches vonn
.Wechseln Sie zu,
r=[2..10^4]
wenn1
nicht ausgegeben werden soll.quelle
8
erfordert ihn).Pyth ,
1615 Bytes1 Byte danke an Jakube.
Probieren Sie es online!
quelle
*dd
durch diese Funktion ersetzen ?05AB1E,
161413 BytesErläuterung
Probieren Sie es online aus
quelle
4°
steht für 10000.Matlab,
5857565248 BytesFür jede Zahl wird geprüft, ob alle quadrierten Faktoren nicht größer als die Zahl selbst sind. Wenn ja, wird diese Nummer angezeigt.
Vielen Dank an @Luis Mendo für diesen Ansatz
Ein anderer Ansatz (50 Bytes):
Berechnet für jede Zahl, ob ihr maximaler quadratischer Primfaktor kleiner ist als die Zahl selbst. Verwendet es dann zur Indizierung.
quelle
for k=4:1e4,if factor(k).^2<=k,disp(k);end;end
SQF ,
252227220Standard-Skriptformat:
Beziehen Sie den Pre-Prozessor in die Kompilierungskette ein, wenn Sie z. B .:
execVM "FILENAME.sqf"
call compile preprocessFile "FILENAME.sqf"
Dies schreibt in das System-Chat-Protokoll, das der Standardeinstellung von SQF am nächsten kommt
quelle
C 113 Bytes
Ideone es!
quelle
Pyke,
131211 BytesProbieren Sie es hier aus!
(Link geht nur bis zu 10 ^ 3, da 10 ^ 4 mal aus)
quelle
J, 20 Bytes
Ergebnis:
Probieren Sie es hier online aus.
quelle
Python 2, 90 Bytes
Ideone es!
quelle
R 97 Bytes
ungolfed
quelle
Pyth, 12 Bytes
Enthält nicht 1.
quelle