Pandigital - primo - python
Publicado por Charlz (3 intervenciones) el 21/04/2020 04:22:14
Hola, tengo un ejercicio donde piden escribir una función panprimo , que determine si un numero es pandigital (o seá, que contiene todos los dígitos del 0 al 9 al menos una vez) y si al mismo tiempo, sus últimos 3 dígitos conforman un número primo, retornando True o False según corresponda.
ej:
2424643 no es pandigital y 643 es primo--> False.
1234567890 cumple que es pandigital, 890 no es primo -->False.
10123485769 cumple que es pandigital y 769 es primo --> True.
El curso es introductorio, y me dan estas sugerencias:
ip1: Puedes convertir un entero a una cadena de texto con el método str(numero), y puedes verificar si alguna letra está en el esta cadena de texto haciendo if letra in string: ...
Tip2: Un número es primo si solo es divisible por 1 y por sí mismo. Para obtener los últimos tres dígitos, puedes obtener el resto del número en su división con 100.
he hecho este codigo, pero no me da el resultado, algo debo estar haciendo mal. Me podrían dar alguna sugerencia?.
ej:
2424643 no es pandigital y 643 es primo--> False.
1234567890 cumple que es pandigital, 890 no es primo -->False.
10123485769 cumple que es pandigital y 769 es primo --> True.
El curso es introductorio, y me dan estas sugerencias:
ip1: Puedes convertir un entero a una cadena de texto con el método str(numero), y puedes verificar si alguna letra está en el esta cadena de texto haciendo if letra in string: ...
Tip2: Un número es primo si solo es divisible por 1 y por sí mismo. Para obtener los últimos tres dígitos, puedes obtener el resto del número en su división con 100.
he hecho este codigo, pero no me da el resultado, algo debo estar haciendo mal. Me podrían dar alguna sugerencia?.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
def panprimo(n):
numeros = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
digpan = str(n)
digprimo = n % 1000
def pandigital(n):
pandigital=True
for i in numeros:
if i not in digpan:
pandigital= False
def primo(n):
primo=True
for i in range(2, digprimo):
if digprimo % i == 0:
primo = False
if pandigital and primo:
print("True")
else:
print("False")
print(panprimo(2424643))
Valora esta pregunta


0