Python :: Aufgabe #329

2 Lösungen Lösungen öffentlich

Palindromische Primzahlen

Anfänger - Python von hollst - 29.03.2021 um 21:12 Uhr
Man erzeuge eine Liste aller Primzahle <= 1 Milliarde (1E+9), die in dezimaler Präsentation umgekehrt gelesen ebenfalls eine Primzahl sind (Palindromische Primzahlen). Z. B. 13; 31 ist ebenfalls Primzahl.

Viel Spaß!

Lösungen:

vote_ok
von eisheiliger (3750 Punkte) - 31.03.2021 um 19:14 Uhr
Quellcode ausblenden Python-Code

"""
#329: Palindromische Primzahlen
Man erzeuge eine Liste aller Primzahle <= 1 Milliarde (1E+9), die in dezimaler Präsentation
umgekehrt gelesen ebenfalls eine Primzahl sind (Palindromische Primzahlen)
"""


def tst_prim(zahl):
    if zahl == 2:
        return True
    if zahl % 2 == 0 or zahl <= 1:
        return False
    for divisor in range(3, int(zahl ** 0.5) + 1, 2):
        if zahl % divisor == 0:
            return False
    return True


def numb_gen(von, bis, fort):
    for z in range(von, bis, fort):
        n = str(z)
        if n == n[::-1]:
            z1 = tst_prim(int(n))
            if z1:
                print(n)


def main():
    print("Einstellige Primzahlpalindrome:")
    numb_gen(1, 9, 1)
    print("Zweistelliges Primzahlpalindrom:")
    numb_gen(11, 99, 2)
    print("Dreistellige Primzahlpalindrome:")
    numb_gen(101, 999, 2)
    print("Vierstellige Primzahlpalindrome:")
    print(". . . gibt es nicht")
    print("Fünfstellige Primzahlpalindrome:")
    numb_gen(1001, 99999, 2)
    print("Sechsstellige Primzahlpalindrome:")
    print(". . . gibt es nicht")
    print("Siebenstellige Primzahlpalindrome:")
    numb_gen(100001, 9999999, 2)
    print("Achtstellige Primzahlpalindrome:")
    print(". . . gibt es nicht")
    print("Neunstellige Primzahlpalindrome:")
    numb_gen(100000001, 199999999, 2)
    numb_gen(300000001, 399999999, 2)
    numb_gen(700000001, 799999999, 2)
    numb_gen(900000001, 999999999, 2)
    print("Zehnstellige Primzahlpalindrome:")
    print(". . . gibt es nicht")


if __name__ == '__main__':
    main()


vote_ok
von AlexGroeg (2010 Punkte) - 15.04.2021 um 10:47 Uhr
Quellcode ausblenden Python-Code

def ist_primzahl(n):
    for i in range(2, int(n**0.5)+1):
        if n % i == 0:
            return False
    return True

liste = []      
n = 10000    #1000000000
i = 8
while i <= n:
    if ist_primzahl(i):        
        if ist_primzahl(int(str(i)[::-1])):
            liste.append(i)
    i += 1

print(liste)

1991500

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.