Python :: Aufgabe #151

4 Lösungen Lösungen öffentlich

Symmetrische Primzahlen

Anfänger - Python von hollst - 03.04.2017 um 13:55 Uhr
Wieviele Primzahlen P < 1.000.000 sind rückwärts gelesen auch eine Primzahl, jedoch ungleich sich selbst?

Anmerkung: Die (Prim)zahlen 2, 3, 5, 7, 11 erfüllen nicht die Bedingungen (sind rückwärts gelesen sich selbst gleich),
als erste erfüllt die 13 die Bedingungen.

Lösungen:

vote_ok
von jigga (4260 Punkte) - 04.04.2017 um 08:41 Uhr
Quellcode ausblenden Python-Code
import math

anzahl = 0
primzahlen = []

def prim(zahl):
	if zahl == 1:
		return False
	elif zahl == 2:
		return True
	elif zahl % 2 == 0:
		return False
	else:
		for i in range(3,int(math.sqrt(zahl)) + 1, 2):
			if zahl % i == 0:
				return False
		return True

for i in range(1000000):
	if prim(i) == True:
		primzahlen.append(i)
for j in primzahlen:
	k = int(str(j)[::-1])
	if k in primzahlen and k != j:
		anzahl += 1
print("Anzahl rückwärtsgelesener Primzahlen, die auch prim sind:",anzahl)
vote_ok
von tebarius (470 Punkte) - 01.09.2018 um 21:51 Uhr
Quellcode ausblenden Python-Code
#Python3.7
# -*- coding: iso-8859-15 -*-
def isItPrime(N):
    for D in range(2, N):
        if (D * D > N):
            break
        if N % D == 0:
            return False
    return True

z=1
grenze=1000000
primes=[] 
print("Generiere Liste mit Primzahlen kleiner als {}".format(grenze))
while z<grenze:
    if isItPrime(z):
        primes.append(z)
        if len(primes)%10000==0:print(len(primes),"Primzahlen gefunden")
    z=z+1
print(len(primes),"Primzahlen werden jetzt überprüft.....")
anzahl=0
for i in primes:
    ireverse=int(str(i)[::-1])
    if ireverse in primes and ireverse!=i:
        #print(i,ireverse)    #falls Ausgabe der Primzahlen und gewünscht ist
        anzahl=anzahl+1
print("Es gibt {} Primzahlen welche kleiner als {}, rückwärts gelesen auch eine Primzahl, jedoch ungleich sich selbst sind.".format(anzahl,grenze))
vote_ok
von satn1241 (3090 Punkte) - 07.04.2020 um 17:08 Uhr
Quellcode ausblenden Python-Code
liste = list(range(13,1000000))

#Primzahltest
def prim_zahl(zahl):
    a = int(zahl**0.5)
    for j in range(2, a+1):
        if zahl%j ==0:
            b = 0
            break
        else:
            b = 1
    return b

#Nicht-Primzahlen entfernen
for i in range(0,len(liste)):
    if prim_zahl(liste[i]) == 0:
        liste[i] = "X"
for j in range(0,liste.count("X")):
    liste.remove("X")
# Umgedrehte Nicht-Primzahlen und spiegelsymmetrische Primzahlen entfernen
for i in range(0,len(liste)):
    a = ""
    for k in range(0,len(str(liste[ji]))):
        a= (str(liste[i]))[k] +a
    if prim_zahl(int(a)) == 0:
        liste[i] = "X"
    if liste[i] == int(a):
        liste[i] = "X"
for j in range(0,liste.count("X")):
    liste.remove("X")

print(len(liste))
# bei 1.000.000 bei mir Laufzeit sehr lang
vote_ok
von Des_ORNTRT (530 Punkte) - 23.05.2020 um 13:25 Uhr
Quellcode ausblenden Python-Code

prime_List = []
prime_bool = True
rvs_prime_bool = True

for i in range(1, 1000000):
    rvs_prime_bool = True
    prime_bool = True
    for j in range(2, (i - 1)):
        if i % j == 0:
            prime_bool = False



    #REVERSE
    a = str(i)[::-1]
    for j in range(2, (int(a) - 1)):
        if int(a) % j == 0:
            rvs_prime_bool = False

    if prime_bool and rvs_prime_bool:
        prime_List.append(i)

print(prime_List)