Ejemplo de práctica de Python 14
Problema:Descomponer un entero positivo en factores primos. Por ejemplo: ingresa 90, imprime 90=2*3*3*5.
Análisis del programa:Para descomponer n en factores primos, primero se debe encontrar el número primo más pequeño k, y luego seguir los siguientes pasos:
(1) Si este número primo es exactamente igual a n, entonces el proceso de descomposición en factores primos ha terminado, solo hay que imprimirlo.
(2) Si n<>k, pero n es divisible por k, entonces se debe imprimir el valor de k, y usar el cociente de n dividido por k como el nuevo entero positivo n, repetir el primer paso.
(3) Si n no es divisible por k, usar k+1 como valor de k, y repetir el primer paso.
Código fuente del programa:
Ejemplo (Python 2.0+)
#!/usr/bin/python
# -*- coding: UTF-8 -*-
def reduceNum(n):
print '{} = '.format(n),
if not isinstance(n, int) or n <= 0 :
print '¡Ingrese un número correcto!'
exit(0)
elif n in [1] :
print '{}'.format(n)
while n not in [1] : # El bucle asegura la recursión
for index in xrange(2, n + 1) :
if n % index == 0:
n /= index # n es igual a n/index
if n == 1:
print index
else : # index debe ser un número primo
print '{} *'.format(index),
break
reduceNum(90)
reduceNum(100)
Ejemplo (Python 3.0+)
#!/usr/bin/python3
def reduceNum(n):
print ('{} = '.format(n), end=" ")
if not isinstance(n, int) or n <= 0 :
print ('¡Ingrese un número correcto!')
exit(0)
elif n in [1] :
print ('{}'.format(n))
while n not in [1] : # El bucle asegura la recursión
for index in range(2, n + 1) :
if n % index == 0:
n //= index # n es igual a n//index
if n == 1:
print (index )
else : # index debe ser un número primo
print ('{} *'.format(index), end=" ")
break
reduceNum(90)
reduceNum(100)
El resultado de salida del ejemplo anterior es:
90 = 2 * 3 * 3 * 5 100 = 2 * 2 * 5 * 5Otras extensiones
100 ejemplos de Python