08-09-2021, 08:54 PM
Estimados, recurro nuevamente a ustedes.
Estoy tratando de resolver un problema en un ejercicio que consta de dos partes.
La primera es ver si cumple con la condicion de ser pandigital, es decir, si cuenta con los numeros del 0 al 9.
Hasta ahi no hay problema.
La segunda parte es ver si los ultimos 3 digitos componen un numero primo.
El asunto aqui es que hago el contador para probar dividirlo y el contador aumenta en forma exponencial y no 1 + 1.
Copio y pego lo que he hecho a ver si alguien detecta mi error.
# pandigital - contiene todos los numeros del 0 al 9 *- 0123456789 -*
# ver si n es pandigital, y si sus ultimas 3 cifras con primos
def panprimo(n):
# a parir de aca validar si es pandigital
numero = str(n)
if len(numero) < 10:
pandigital = False
else:
lista = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
for x in numero:
if x in lista:
lista.remove(x)
if len(lista) == 0:
pandigital = True
else:
pandigital = False
print("Pandigital ", pandigital)
numpri = n%1000
i = 2
print(numpri)
while i<= numpri:
if (numpri % i) == 0:
print ("i vale ", i)
primo = False
else:
primo = True
i+=1
print("primo ", primo)
if pandigital and primo is True:
return True
else:
return False
print(panprimo(12340567894))
a continuacion pego lo que arrojan los print
Pandigital True
894
i vale 2
i vale 3
i vale 6
i vale 149
i vale 298
i vale 447
i vale 894
primo False
False
Desde ya muchas gracias!!!!!
Estoy tratando de resolver un problema en un ejercicio que consta de dos partes.
La primera es ver si cumple con la condicion de ser pandigital, es decir, si cuenta con los numeros del 0 al 9.
Hasta ahi no hay problema.
La segunda parte es ver si los ultimos 3 digitos componen un numero primo.
El asunto aqui es que hago el contador para probar dividirlo y el contador aumenta en forma exponencial y no 1 + 1.
Copio y pego lo que he hecho a ver si alguien detecta mi error.
# pandigital - contiene todos los numeros del 0 al 9 *- 0123456789 -*
# ver si n es pandigital, y si sus ultimas 3 cifras con primos
def panprimo(n):
# a parir de aca validar si es pandigital
numero = str(n)
if len(numero) < 10:
pandigital = False
else:
lista = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
for x in numero:
if x in lista:
lista.remove(x)
if len(lista) == 0:
pandigital = True
else:
pandigital = False
print("Pandigital ", pandigital)
numpri = n%1000
i = 2
print(numpri)
while i<= numpri:
if (numpri % i) == 0:
print ("i vale ", i)
primo = False
else:
primo = True
i+=1
print("primo ", primo)
if pandigital and primo is True:
return True
else:
return False
print(panprimo(12340567894))
a continuacion pego lo que arrojan los print
Pandigital True
894
i vale 2
i vale 3
i vale 6
i vale 149
i vale 298
i vale 447
i vale 894
primo False
False
Desde ya muchas gracias!!!!!