Primzahlen Problem

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Lennyy
User
Beiträge: 7
Registriert: Montag 15. Oktober 2007, 15:41

Montag 15. Oktober 2007, 15:53

Hallo,
ich habe seit neuestem das fach "mathe am pc".
Wir verwenden python und da ich hier auch schon früher antworten auf viele meiner fragen gefunden habe, habe ich mich nun angemeldet.

Ich habe die forensuche benutzt und habe die threads aufmerksam durchgelesen, bin aber noch anfänger, und beginne gerade erst mich mit python zu beschäftigen. Also sind mir die meisten befehle noch weitgehend unbekannt.

Ich bin auf der suche nach einem möglichst einfachen 9. klasse script!?, mit dem ich herausbekomme, ob eine zahl eine primzahl ist. Ich habe gelesen, das es hier nich gern gesehen wird wenn sich leute ihre hausaufgaben machen lassen, mein problem ist aber keine hausaufgabe, sondern ich habe es in der schule einfach noch nicht richtig verstanden.

Mfg

Lennyy
Bernhard
User
Beiträge: 136
Registriert: Sonntag 15. Januar 2006, 20:31
Wohnort: Greifswald
Kontaktdaten:

Montag 15. Oktober 2007, 15:59

Hallo Lennyy,

und herzlich willkommen im Forum. Versuch es mal mit den folgenden beiden Links zum Einstieg. Danach kennst Du auch die nötigen Begriffe für die Suchfunktion.

http://www.python-forum.de/topic-1627.html
http://www.python-forum.de/topic-1311.html

Gruß,
Bernhard
Lennyy
User
Beiträge: 7
Registriert: Montag 15. Oktober 2007, 15:41

Montag 15. Oktober 2007, 16:25

Hallo und danke für die zügige antwort,
das eben ist das problem. Ich kenne kaum einen der dort verwendeten befehle. ich kenne if, while und kann quadratwurzeln ausrechnen. :oops:

Lenny
Bernhard
User
Beiträge: 136
Registriert: Sonntag 15. Januar 2006, 20:31
Wohnort: Greifswald
Kontaktdaten:

Montag 15. Oktober 2007, 16:35

Tja, dann solltest Du nicht auf der Suche nach einem Skript sein, sondern auf der Suche nach einer guten Anleitung zum Python-Lernen. Wenn Du gut Englisch kannst, findest Du online eine ganze Menge (1). Ich persönlich glaube ja an Bücher (2).
(1) http://www.python.org/doc/
(2) http://www.python-forum.de/topic-11234.html
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Montag 15. Oktober 2007, 17:13

Was man so zum (optimierten) bestimmen von Primzahlen braucht: Modulo, if, Gleichheit, Quadratwurzel, for.

Eine unoptimierte Variante ist sogar noch einfacher. Ich habe mal ein Benchmark-Skript dafür geschrieben, mit zwei Varianten. Werde es aber jetzt noch nicht posten, weil es dann heißt, dass ich fremde Hausaufgaben mache. Aber ich kann gerne Tipps geben.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Lennyy
User
Beiträge: 7
Registriert: Montag 15. Oktober 2007, 15:41

Montag 15. Oktober 2007, 18:47

Code: Alles auswählen

z=123
t=2
while t<z :
    if z%t==0:
        print 'keine Primzahl' 
        t=z+10
    else :t=t+1
if t==z :
    print 'Primzahl'
wo ist der fehler? ich versteh das nich
schlangenbeschwörer
User
Beiträge: 419
Registriert: Sonntag 3. September 2006, 15:11
Wohnort: in den weiten von NRW
Kontaktdaten:

Montag 15. Oktober 2007, 19:07

Könntest du Zeile 6 näher erläutern?
Lennyy
User
Beiträge: 7
Registriert: Montag 15. Oktober 2007, 15:41

Montag 15. Oktober 2007, 19:11

oh


das ist aus meinen unterrrichts"aufzeichnungen"

Code: Alles auswählen

z=123
t=2
while t<z :
    if z%t==0:
        print 'keine Primzahl' 
        t=z+10
    else :t=t+1
if t==z :
    print 'Primzahl'
:?
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Montag 15. Oktober 2007, 19:38

Schmeiß die ``while``-Schleife weg, nimm stattdessen besser ``for`` und ``(x)range``. Mit ``(x)range`` erstellst du eine Liste von Zahlen die zu prüfen sind und wenn die Zahl durch diese Teilbar ist, dann ist es eine Primzahl, also kannst du aus der ``for``-Schleife ausbrechen. Mit der ``while``-Schleife geht es natürlich auch, aber da musst du dich noch um einen externen Zähler kümmern, bei ``for`` bekommst du den geschenkt.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Lennyy
User
Beiträge: 7
Registriert: Montag 15. Oktober 2007, 15:41

Montag 15. Oktober 2007, 20:57

Code: Alles auswählen

z=10
t=2
while z>t:
      if z%t==0:
            print 'Keine Primzahl'
soweit so gut das läuft....
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Montag 15. Oktober 2007, 21:00

Lennyy hat geschrieben:soweit so gut das läuft....
Ja, unendlich lang und ohne brauchbare Ergebnisse zu erzielen. Was ist an meinen Tipps so schlecht, dass du keinen einzigen beachtet hast?
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Lennyy
User
Beiträge: 7
Registriert: Montag 15. Oktober 2007, 15:41

Montag 15. Oktober 2007, 21:01

ich kenne die befehle einfach nich. wie kann ich das denn jetzt mit meinen einfachen mitteln zuende führen? mal angenommen ich habe wie oben die 123 als zahl.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Montag 15. Oktober 2007, 21:20

Dann brauchst du erstmal alle Zahlen von 2 bis 122 zum testen (jetzt mal unoptimiert):

Code: Alles auswählen

for number in range(2, 123):
    print number
    # stattdessen jetzt auf teilbarkeit prüfen
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Dienstag 16. Oktober 2007, 08:28

Was du auf jeden Fall brauchst, ist der Modulo-Operator, der gibt dir den Rest einer Ganzzahl-Division:

Code: Alles auswählen

>>> 4%3  # Rest von 4/3
1
>>> 15%6 # Rest von 15/6
3
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Dienstag 16. Oktober 2007, 09:35

Rebecca hat geschrieben:Was du auf jeden Fall brauchst, ist der Modulo-Operator, der gibt dir den Rest einer Ganzzahl-Division
Das geht auch ohne *g*
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
Antworten