s1Eva2010TI_T2 Número Omirp

Ejercicio: 1Eva2010TI_T2 Número Omirp



número OMIRP

Nota: Omirp se lee de derecha a izquierda como primo.

Repasar algoritmo de validación de números primos, también el algoritmo para invertir dígitos de un número. En este ejercicio es necesario usar ambos.

Primero para verificar si el número a verificar es primo, inicia suponiendo que es primo y busca probar lo opuesto.

# revisa si es primo
esprimo = 1
i = 2
while (i<n):
    r = n%i
    if r==0:
        esprimo = 0
    i = i+1

luego para invertir sus dígitos, usando residuo de 10 y cociente.
Los residuos se añaden como unidades al número al revés multiplicado por 10

número1597159151
residuo7951
cociente1591510
al revés0*10+7 = 77*10+9 = 7979*10+5 = 7957951
# invierte los dígitos del número
m = n
alreves = 0
while (m>0):
    r = m%10
    m = m//10
    alreves = alreves*10 + r

Finalmente verificar si el número con dígitos invertidos también es primo.

# revisa si es omirp
if (esprimo==1 and esprimoA==1):
    omirp = 1
else:
    omirp = 0

Si ambos son primos entonces el número es omirp.



Algoritmo en Python

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1Eva_IT2010_T2 Número Omirp
# Propuesta: edelros@espol.edu.ec

# INGRESO
n = int(input('numero a validar omirp: '))

# PROCEDIMIENTO

# revisa si es primo
esprimo = 1
i = 2
while (i<n):
    r = n%i
    if r==0:
        esprimo = 0
    i = i+1

# invierte los dígitos del número
m = n
alreves = 0
while (m>0):
    r = m%10
    m = m//10
    alreves = alreves*10 + r

# revisa si alreves es primo
esprimoA = 1
i = 2
while (i<alreves):
    r = alreves%i
    if r==0:
        esprimoA = 0
    i = i + 1

# revisa si es omirp
if (esprimo==1 and esprimoA==1):
    omirp = 1
else:
    omirp = 0

# SALIDA
print('es número omirp: ', omirp)

Resultado del algoritmo

numero a validar omirp: 1597
es número omirp:  1
>>> 
numero a validar omirp: 1598
es número omirp:  0
>>> 


Diagrama de Flujo

diagrama Omirp 01

diagramaOmirp02

diagrama Omirp 03