Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Python Code » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Die letzten 6 Beiträge
Kleiber

Danke an alle für die Hinweise. Euler hat meine Lösungsidee dann nochmal verbessert, sieht so besser aus Augenzwinkern
eulerscheZahl

Kleiber schreibst zunächst für jede Zahl im Bereich 1-100 entweder True oder False in die Liste, je nachdem ob sie prim ist oder nicht.
Wenn die Zahl 0 oder 1 ist, ist sie offensichtlich nicht Prim, also schreibe False in die Liste
Die Zahlen 2, 3 und 5 sind Primzahlen, in dem Fall schreibe True
Trifft das nicht zu, ist die Zahl aber Vielfaches von 2, 3 oder 5, ist sie nicht prim, also schreibe False in die Liste
Hat nicht von alledem zugetroffen: gehe von 5 aus in 2er Schritten bis bis n/2 (aufgerundet) und führe eine Probedivision durch

Hier der Code von Kleiber nochmal leicht modifiziert:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
isPrime=[]
for x in range(1,101):
	if x==0 or x==1:
		isPrime.append(False)
	elif x==2 or x==3 or x==5:
		isPrime.append(True)
	elif x%2==0 or x%3==0 or x%5==0:
		isPrime.append(False)
	else:
		noDivisors = True
		for d in range(5,x//2+1,2):
			if x%d==0:
				noDivisors = False
				break
		isPrime.append(noDivisors)
	
print(isPrime)
print(len(isPrime))
ed209

Hi Kleiber,

Ich verstehe Deine Loesung ueberhaupt nicht. Kannst Du uns vielleicht erklaeren wie sie funktionieren soll und wir koennen dann schauen ob Du eventuell irgendwo einen Denkfehler oder einen Programmierfehler hast.

Gruss,
ED
eulerscheZahl

So würde ich es machen:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
def isPrime(n):
	if (n < 2): return False
	i = 2
	while (i*i <= n):
		if n%i == 0: return False
		i += 1
	return True

start = int(raw_input("Startwert: "))
end = int(raw_input("Endwert: "))
for i in range(start, end+1):
	print isPrime(i)

Beachte, dass du mit den Teilern nur bis sqrt(n) gehen musst, nicht bis n/2
Kleiber

So, habe EINE Lösung, aber keine elegante unglücklich Geht das auch anders?

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
isPrime=[]
for x in range(1,101):
	if x==0 or x==1:
		isPrime.append(False)
		continue
	if x==2 or x==3 or x==5:
		isPrime.append(True)
		continue
	if x%2==0 or x%3==0 or x%5==0:
		isPrime.append(False)
		continue
	l=0	
	for d in range(5,int(x**0.5)+1,2):
		if x%d==0:
			
			isPrime.append(False)
			l=1
			break
		continue	
	
	if l==0:	
		isPrime.append(True)
	
print(isPrime)
print(len(isPrime))		
Kleiber Python Code

Abend Leute,

ich habe hier eine Aufgabe, an der ich jetzt seit 3h scheitere unglücklich Dabei ist es so einfach...
Ich soll einen Code bauen, in den man einen bestimmten Bereich eingibt, z.B. 1-100, und dann werden dort alle Primzahlen gesucht. Er beginnt also mit 1 und schreibt dann True für Primzahl bzw. False für keine Primzahl. Ist keine tolle Aufgabe, aber eben die Aufgabe...

Leider scheitert mein Code. Hier mein Code:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
isPrime=[]
for x in range(1,100):
	if x==0 or x==1:
		isPrime.append(x+100)
		continue
	if x==2 or x==3 or x==5:
		isPrime.append(x+200)
		continue
	if x%2==0 or x%3==0 or x%5==0:
		isPrime.append(x+300)
		continue
	for d in range(5,(x//2)+1,1):
		if x%d==0:			
			isPrime.append(x+900)
			break
	
	isPrime.append(x+500)
	
print(isPrime)
print(len(isPrime))		


Die Trues und Falses fehlen, ich habe zum Debuggen die Zahlen in Klammern. Ihr seht, dass der Code knapp scheitert, wenn ihr euch 49 anschaut. Diese Zahl taucht 2x mal auf, obwohl der Code zuerst eigentlich korrekt erkennt, dass es KEINE Prim ist unglücklich Kann jemand den Bug finden? Python3...