Ejercicio: 1Eva2008TI_T1 Teorema de Wilson
“Un número p es primo si y solo si el factorial (p-1)! + 1 es divisible por p”.
El ejercicio se divide en dos partes principales:
- determinar si un número es primo
- Si es primo, validar lo que indica Wilson
Para la primera parte, se usa el concepto de residuo de la división para determinar si el número es primo.
# revisa esprimo
esprimo = 1
divisor = 2
while not(divisor>=n or esprimo==0):
r = n%divisor
if (r == 0):
esprimo = 0
divisor = divisor + 1
La bandera usada es "esprimo" que inicia con el supuesto de ser verdadero ó 1.
Solo si el número resulta ser primo, se aplican las operaciones de Wilson. Primero determinando el valor del factorial,
wilson = -1
if esprimo == 1:
# factorial
factor = 1
i = 1
while not(i>=n):
factor = factor*i
i = i + 1
y luego revisar Wilson
# revisa Wilson
residuo = (factor + 1) % n
if residuo == 0:
wilson = 1
else:
wilson = 0
Se añaden los bloques de ingreso y salida para completar el algoritmo
Algoritmo en Python
# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1Eva_IT2008_T1 Teorema de Wilson
# INGRESO
n = int(input('ingrese numero primo: '))
while not(n>0):
n = int(input('ingrese numero positivo: '))
# PROCEDIMIENTO
# revisa esprimo
esprimo = 1
divisor = 2
while not(divisor>=n or esprimo==0):
r = n%divisor
if (r == 0):
esprimo = 0
divisor = divisor + 1
wilson = -1
if esprimo == 1:
# factorial
factor = 1
i = 1
while not(i>=n):
factor = factor*i
i = i + 1
# revisa Wilson
residuo = (factor + 1) % n
if residuo == 0:
wilson = 1
else:
wilson = 0
# SALIDA
print('cumple Wilson: ', wilson)
resultado del algoritmo
ingrese numero primo: 7
cumple Wilson: 1
>>>
== RESTART: D:\Ejemplos\unprograma.py ==
ingrese numero primo: 13
cumple Wilson: 1
>>>
== RESTART: D:\Ejemplos\unprograma.py ==
ingrese numero primo: 8
cumple Wilson: -1
>>>