Ejercicio: 1Eva_IT2008_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 >>>