Python :: Aufgabe #46 :: Lösung #1

6 Lösungen Lösungen öffentlich
#46

Alle Primzahlen bis zu einem Maximalwert ermitteln

Anfänger - Python von devnull - 26.02.2014 um 18:36 Uhr
Es soll ein Programm geschrieben werden, welches alle Primzahlen im Bereich von 2 bis zu einem Maximalwert sucht und auf der Konsole ausgibt.
Den Maximalwert soll der Benutzer beim Programmaufruf auf der Kommandozeile angeben können.
Der Algorithmus zur Primzahlensuche ist frei wählbar.
#1
vote_ok
von malthea (180 Punkte) - 04.03.2014 um 19:03 Uhr
Quellcode ausblenden Python-Code
""" primzahlen - Python 3.3.4
    Berechnet alle Primzahlen im Intervall [2 - obere Grenze] """

def eingabe (a):
    """ abgesicherte Eingabe fuer Integerwerte (a==False)
    """
    b = 0

    while a == False:
        try:
            b = int(input(':'))
            a = True
            if b < 3:
                a =False
                print ('Bitte eine positive Zahl groesser als 2 eingeben', end = ' ')
        except ValueError:
            print ('Bitte eine Integerzahl eingeben', end = ' ')
            a = False
    return b

def aufaddition (a, b, c):
    """ addiert die bisher gefundenen Primzahlen auf bis >= aktuelle Zahl
    """
    while a <= c:
        a += b

    return (a)
    
pz = [2]
pzsumme = [2]

print ('bis zu welcher Zahl sollen die Primzahlen berechnet werden?', end = ' ')
maximum = eingabe (False)

pzanz = 1
lfdzahl = 3
flag = True
i = 0
j = 0

while lfdzahl in range (2, maximum+1):
    
    while flag == True and i < pzanz:

        while i in range (0, pzanz):
            if pzsumme[i] == lfdzahl:
                flag = False                   # keine Primzahl

            pzsumme[i] = aufaddition (pzsumme[i], pz[i], lfdzahl)

            i += 1

    if flag == True:
        pz.append (lfdzahl)
        pzsumme.append (lfdzahl)
        pzanz += 1

    lfdzahl +=1
    i = 0
    flag = True



print (pz)

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
2108382

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.