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:
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()
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)