Matroids Matheplanet Forum Index
Moderiert von matph
Informatik » Programmieren » Python: Primzahl berechnen mit definierten Maximum
Druckversion
Druckversion
Autor
Universität/Hochschule J Python: Primzahl berechnen mit definierten Maximum
Maddy
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 18.12.2012
Mitteilungen: 609
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Themenstart: 2020-07-11


Hallo zusammen,

mal kurz einen Überblick. Ich versuche zu prüfen, ob eine Zahl eine Primzahl ist oder nicht. Dafür gibt es ein Maximum wie viele Zahlen geprüft werden sollen.

Es muss jedoch ein Fehler in meinem Code sein, da er ab einem Gewissen Punkt nicht geht, in meinem Kopf jedoch schon. Ich sitze da jetzt schon ein paar Tage dran und habe den Code oft geändert und auch schon neu gemacht, jedoch bekomme ich es immer noch nicht hin. Ich habe auch noch recht viele print Befehle drinne, um eben den Code zu prüfen.

Also, hier mein Python Code (ich bin noch am Python lernen und allgemein am Programmieren):
Python
import math
 
check = 0
prime = [2]
number = prime[0]
 
# Main
while True:
 
    # Number which should be checked
    number += 1
    print(" ")
    print("Current number: ", number)
    print("Current total prime numbers: ", len(prime))
 
    # Root of the current number
    numbermax = int(round(math.sqrt(number), 0))
    print("Maximum number which is used for the check: ", numbermax)
 
    # Numbers which are checked
    lengthcheck = len(range(2,numbermax + 1,1))
    print("Maximum possible check length:", lengthcheck)
 
    for i in range(2,numbermax + 1,1):
 
        print("laeuft")
 
        # Counter for numbers which match conditions
        if number % i == 1:
            check += 1
            print("+1")
 
        # Break if numbers don't match the conditions
        if number % i == 0:
            check = 0
            print(number, "can not be a prime number")
            break
 
    print("checks collected:", check)
 
    # Final check if all numbers are possible
    if check == lengthcheck:
        print(number, "is a prime number")
        prime.append(number)
        check = 0
 
    # Maximum loops
    if number == 12:
 
        print(prime)
        break

Und hier die Ausgabe:
Python
 
Current number:  3
Current total prime numbers:  1
Maximum number which is used for the check:  2
Maximum possible check length: 1
laeuft
+1
checks collected: 1
3 is a prime number
 
Current number:  4
Current total prime numbers:  2
Maximum number which is used for the check:  2
Maximum possible check length: 1
laeuft
4 can not be a prime number
checks collected: 0
 
Current number:  5
Current total prime numbers:  2
Maximum number which is used for the check:  2
Maximum possible check length: 1
laeuft
+1
checks collected: 1
5 is a prime number
 
Current number:  6
Current total prime numbers:  3
Maximum number which is used for the check:  2
Maximum possible check length: 1
laeuft
6 can not be a prime number
checks collected: 0
 
Current number:  7
Current total prime numbers:  3
Maximum number which is used for the check:  3
Maximum possible check length: 2
laeuft
+1
laeuft
+1
checks collected: 2
7 is a prime number
 
Current number:  8
Current total prime numbers:  4
Maximum number which is used for the check:  3
Maximum possible check length: 2
laeuft
8 can not be a prime number
checks collected: 0
 
Current number:  9
Current total prime numbers:  4
Maximum number which is used for the check:  3
Maximum possible check length: 2
laeuft
+1
laeuft
9 can not be a prime number
checks collected: 0
 
Current number:  10
Current total prime numbers:  4
Maximum number which is used for the check:  3
Maximum possible check length: 2
laeuft
10 can not be a prime number
checks collected: 0
 
Current number:  11
Current total prime numbers:  4
Maximum number which is used for the check:  3
Maximum possible check length: 2
laeuft
+1
laeuft
checks collected: 1
 
Current number:  12
Current total prime numbers:  4
Maximum number which is used for the check:  3
Maximum possible check length: 2
laeuft
12 can not be a prime number
checks collected: 0
[2, 3, 5, 7]

Die 11 ist eine Primzahl, jedoch akzeptiert er diese nicht und ich weiß nicht warum.

Er wird die 11 mit der 2 und der 3 prüfen.

11 / 2 akzeptiert er und check gibt +1 dazu
11 / 3 würde auch einen Rest ergeben, aber er fügt kein +1 hinzu und ich kann nicht verstehen, warum nicht. Es dürfte keinen Unterschied zur 7 geben, welche beides mal ein +1 dazu gibt.

Hat jemand einen Tipp für mich?

Danke



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
DerEinfaeltige
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.02.2015
Mitteilungen: 2332
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.1, eingetragen 2020-07-11


11 % 3 ergibt den Rest 2.

Du scheinst allerdings nur die Reste 1 und 0 zu betrachten.


-----------------
Why waste time learning when ignorance is instantaneous?
- Bill Watterson -



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Maddy
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 18.12.2012
Mitteilungen: 609
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.2, vom Themenstarter, eingetragen 2020-07-11


Ähm ja das stimmt. Ich bin davon ausgegangen das % immer eine 1 gibt, wenn es einen Rest hat und 0 wenn es keinen gibt, also eher True und False 🙄

Dann prüfe ich das mal noch, danke :D

Nachtrag: Ich muss wohl mein Code ein wenig ändern, da es ja neben der 1 und 2 auch noch die 3 geben kann.

Nachtrag 2: So, hab es gelöst. Danke für die Hilfe :)
Python
import math
 
check = 0
prime = [2]
number = prime[0]
 
# Main
while True:
 
    # Number which should be checked
    number += 1
    print(" ")
    print("Current number: ", number)
    print("Current total prime numbers: ", len(prime))
 
    # Root of the current number
    numbermax = int(round(math.sqrt(number), 0))
    print("Maximum number which is used for the check: ", numbermax)
 
    # Numbers which are checked
    lengthcheck = len(range(2,numbermax + 1,1))
    print("Maximum possible check length:", lengthcheck)
 
    for i in range(2,numbermax + 1,1):
 
        print("laeuft")
 
        # Counter for numbers which match conditions
        if number > 0:
            check += 1
            print("+1")
 
        # Break if numbers don't match the conditions
        if number % i == 0:
            check = 0
            print(number, "can not be a prime number")
            break
 
    print("checks collected:", check)
 
    # Final check if all numbers are possible
    if check == lengthcheck:
        print(number, "is a prime number")
        prime.append(number)
        check = 0
 
    # Maximum loops
    if number == 12:
 
        print(prime)
        break



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Maddy hat die Antworten auf ihre/seine Frage gesehen.
Maddy hat selbst das Ok-Häkchen gesetzt.
Neues Thema [Neues Thema]  Druckversion [Druckversion]

 


Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2020 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]