Finden Sie in Python Primzahlen mit einem möglichst kurzen Code

Einführung

Als ich mir [diesen Artikel] ansah (https://qiita.com/ryuichi1208/items/f9e6ac2b99bbe4fc82d3), war ich beeindruckt, ob Tetris in nur sieben Zeilen hergestellt werden konnte. Aber ich kann überhaupt kein Javascript, deshalb verstehe ich die Bedeutung nicht. (Ich meine, ich verstehe die Syntax, aber ich weiß nicht, was ich tue) Ich erkannte jedoch, dass eine kurze Beschichtung cool sein würde, und ich dachte, dass Python dazu in der Lage sein könnte, also werde ich sie vorstellen. Außerdem habe ich keinen Wortschatz, also vergib mir bitte, auch wenn der Satz seltsam ist.

Algorithmus zur Beurteilung normaler Zahlen

Versuchen Sie zunächst, ein Programm zur Beurteilung von Primzahlen normal zu erstellen. (Ausführungsgeschwindigkeit wird nicht berücksichtigt)

JudgeNum=int(input("Nummer?"))
prime=True
for i in range(2,JudgeNum):
    if JudgeNum%i==0:
        prime=False
print(prime)

Ausführungsergebnis

Nummer?5
True

Dies ist die übliche Antwort. Selbst wenn Sie dies anderen Leuten zeigen, ist es eine Reaktion wie "Hmm". Lassen Sie uns dies vorerst ein wenig verkürzen

Algorithmus zur Beurteilung der kurzen Primzahl

Zuerst

int(input("Nummer?"))#Ist
int(input())#Ersetzen mit
JudgeNum#Ist
n#Ersetzen mit

Verwenden Sie als Nächstes die Einschlussnotation.

prime=True
for i in range(2,n):
    if n%i==0:
        prime=False

Dieser Typ

prime=not[i for i in range(2,n) if n%2==0]

Ist fast das gleiche wie In dieser Einschlussnotation wird die Anzahl der Risse zur Liste hinzugefügt.

In Python wird eine leere Liste als falsch ausgewertet. Wenn Sie sie also mit nicht umdrehen, ist die leere Liste (was bedeutet, dass sie nicht durch alle Zahlen teilbar war) eine Primzahl. (Wortschatz) (Ich habe versucht, es mit ~ zu drehen, anstatt für einen Moment, aber ich konnte es nicht, weil der Flip eine Liste ist.)

Dann brauchen Sie die Primvariable nicht. Damit

print(not[i for i in range(2,n) if n%2==0])

Kann mit gekürzt werden. Schließlich

n=int(input())
print(not[i for i in range(2,n) if n%2==0])

Ich konnte es auf zwei Zeilen kürzen.

Einzeiliger Primbeurteilungsalgorithmus

Wenn Sie so weit gekommen sind, hätte ich gerne eine Zeile. Wenn Sie jedoch eine Variable deklarieren, müssen Sie sie brechen. Ist es notwendig, mindestens zwei Zeilen zu haben, da der Algorithmus zur Beurteilung der Primzahl ohne Verwendung von Variablen fast unmöglich ist? Ich wünschte, ich könnte es mit Kommas wie Funktionsargumenten tun ... . . . ! Soll ich eine Funktion benutzen! Bei normalen Funktionen ist dies jedoch nicht möglich. Daher verwenden wir eine anonyme Funktion (Lambda). Nehmen Sie einfach n als Argument

(lambda n:print(not[i for i in range(2,n)if n%i==0]))(int(input()))

Jetzt können Sie es auf eine Zeile komprimieren. Zwei Zeilen haben weniger Zeichen. Weißt du?

Schließlich

Dies ist eine kurze Beschichtung, an der ich hart gearbeitet habe. Wenn Sie einen kürzeren Code haben, lassen Sie es mich bitte wissen.

Recommended Posts

Finden Sie in Python Primzahlen mit einem möglichst kurzen Code
Primzahl in Python
Ich habe mit Python nach einer Primzahl gesucht
Projekt Euler # 10 "Summe der Primzahlen" in Python
Finden Sie Primzahlen rekursiv
Die findähnliche Sache der Liste in Python
Primzahl 2 in Python
Behandle Primzahlen mit Python / Ruby / PHP / Golang (Go)
[Python 3] Primfaktor-Zerlegung in 14 Zeilen
Finde Fehler in Python
Beurteilung von Primzahlen mit Python
Finden Sie die Reihenfolge / Kombination in Python
Lassen Sie uns das Umfangsverhältnis mit Python finden
Behandeln Sie komplexe Zahlen in Python
Testen mit Zufallszahlen in Python
Verwenden Sie Stoff wie in Python (Stoff3)
Unendlicher Primgenerator in Python3
Das Gesetz der Zahlen in Python
[Python] nCr mod Primzahlen berechnen
Projekt Euler # 3 "Maximale Primfaktoren" in Python
Suchen Sie nach Dateien wie Linux Find in Python
Schreiben Sie eine kurze Eigenschaftsdefinition in Python
Projekt Euler # 7 "1000 1. Primzahl" in Python
Suchen und überprüfen Sie die inverse Matrix in Python
Finden Sie (deterministische endliche) direkte Produktautomaten in Python
Projekt Euler # 2 "Gerade Fibonacci-Zahl" in Python
Ich habe versucht, die Zusammenführungssortierung in Python mit möglichst wenigen Zeilen zu implementieren
Techniken, die häufig bei der Python-Kurzcodierung verwendet werden (Notepad)
AtCoder: Python: Automatisieren Sie Beispieltests so weit wie möglich.
Primzahlaufzählung und Primzahlbeurteilung in Python
Minimale Implementierung von Union Find in Python
Finden Sie den Bruchteil des in Python eingegebenen Werts heraus
Primfaktor-Zerlegung ver.1 der in Python eingegebenen Ganzzahlen
Finden Sie die Lösung der Gleichung n-ter Ordnung mit Python
Klassenvererbungspraxis in Python, wie in sklearn zu sehen
Projekt Euler # 13 "Summe großer Zahlen" in Python
Holen Sie sich die Datei, Funktion, Zeilennummer in Python ausgeführt
Primfaktor-Zerlegung Version 2 der in Python eingegebenen Ganzzahlen
So geben Sie "Ketsumaimo" standardmäßig in Python aus
Verwenden Sie Python im Docker-Container als Pycharm-Interpreter
[Python] Finden Sie die Translokationsmatrix in Einschlussnotation
Quadtree in Python --2
Python in der Optimierung
CURL in Python
Metaprogrammierung mit Python
Python 3.3 mit Anaconda
SendKeys in Python
Epoche in Python
Zwietracht in Python
Deutsch in Python
DCI in Python
Quicksort in Python
nCr in Python
N-Gramm in Python
Programmieren mit Python
Plink in Python
Konstante in Python
FizzBuzz in Python