Практический пример Python 14
Задача:Разложите положительное целое число на простые множители. Например: при вводе 90 выведите 90=2*3*3*5.
Анализ программы:Чтобы разложить n на простые множители, сначала найдите наименьшее простое число k, затем выполните следующие шаги:
(1) Если это простое число в точности равно n, это означает, что процесс разложения на простые множители завершён; просто выведите его.
(2) Если n<>k, но n делится на k, то выведите значение k и используйте частное от деления n на k как новое положительное целое число n, повторите первый шаг.
(3) Если n не делится на k, используйте k+1 в качестве значения k и повторите первый шаг.
Исходный код программы:
Пример (Python 2.0+)
#!/usr/bin/python
# -*- coding: UTF-8 -*-
def reduceNum(n):
print '{} = '.format(n),
if not isinstance(n, int) or n <= 0 :
print 'Пожалуйста, введите корректное число!'
exit(0)
elif n in [1] :
print '{}'.format(n)
while n not in [1] : # Цикл обеспечивает рекурсию
for index in xrange(2, n + 1) :
if n % index == 0:
n /= index # n равно n/index
if n == 1:
print index
else : # index должен быть простым числом
print '{} *'.format(index),
break
reduceNum(90)
reduceNum(100)
Пример (Python 3.0+)
#!/usr/bin/python3
def reduceNum(n):
print ('{} = '.format(n), end=" ")
if not isinstance(n, int) or n <= 0 :
print ('Пожалуйста, введите корректное число!')
exit(0)
elif n in [1] :
print ('{}'.format(n))
while n not in [1] : # Цикл обеспечивает рекурсию
for index in range(2, n + 1) :
if n % index == 0:
n //= index # n равно n//index
if n == 1:
print (index )
else : # index должен быть простым числом
print ('{} *'.format(index), end=" ")
break
reduceNum(90)
reduceNum(100)
Результат вывода приведённого выше примера:
90 = 2 * 3 * 3 * 5 100 = 2 * 2 * 5 * 5Другие расширения
100 примеров на Python