Python :: Aufgabe #329
2 Lösungen
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ß!
Viel Spaß!
Lösungen:
"""
#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()
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)
