Primzahlen richtig berechnen?
Mein Problem ist, da sich ein py Programm geschrieben habe, was ich eigentlich haben möchte 2,3 ,5 ,7, 11 ,13 ,17 ,19 ,23 ,29 ,31 aber ich bekomme 2,3 ,5 ,7,11 ,13 ,15,17 ,19 ,23,25 ,29 ,31 usw raus ich wollte jetzt alles nochmal durch 2,5 rechnen und jede zahl die keine Nachkommastelle hat, rauswerfen aus der liste das ganze geschieht in py leider kann ich kein code hinausgeben, da ich ihn Wieder reparieren muss und als ich die Methode probiert habe in der Schule ist mir auch aufgefallen das die 5 rausfliegen würde weshalb meine frage ist wie ich das clever machen könnte
ich bedanke mich im voraus mit jeder hilfreichen Antwort
Wie sieht denn dein aktueller Code aus?
4 Antworten
Das l. append(i) darfst du nur machen, nachdem alle j erfolglos getestet wurden. Momentan hängst du i jedesmal an, wenn ein j kein Teiler von i ist.
Rück das else weniger ein, sodass es genau unter dem for j steht. Ein for-else wird nur dann ausgeführt, wenn die Schleife nicht mit break beendet wurde. Das ist eine der vielen praktischen Besonderheiten von Python.
Ich würde es vielleicht so machen.
import time
import math
from datetime import datetime
l = [2]
num = 100
def is_prime(i):
for j in range(3, int(i**0.5)+1, 2):
if i%j==0:
return False
return True
for i in range(3,num+1,2):
if is_prime(i):
l.append(i)
print(l)
Mit einer Funktion ist es übersichtlicher und man kann es auch einfacher wiederverwenden.
Stimmt (・_・;). Hab ich ganz vergessen. Hab schon länger nichts mehr mit Primzahlen zu tun gehabt und ich wusste halt nur "Eine Zahl, die nur durch 1 und durch sich selber teilbar ist"
Danke für den Hinweis
Zunächst: schonmal etwas von Interpunktion gehört? Deine Frage ist ja kaum lesbar!
ich bedanke mich im voraus mit jeder hilfreichen Antwort
du bedankst dich mit hilfreichen Antworten? Worauf?
Es gibt verschiedenste Methoden, Primzahlen zu finden.
Bekannte sind etwa das Sieb des Eratosthenes oder das Prüfen auf Teiler bis zur Wurzel der Zahl.
ioch habe das teilen mit der wurzel das sieb schaue ich mir jetzt an sry
Solltest aber die 1 aus der Liste rausnehmen, sonst hast du zumindest eine Zahl drin, die keine Primzahl ist.