Практический пример Python 14

Python 100例100 примеров на Python

Задача:Разложите положительное целое число на простые множители. Например: при вводе 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

Python 100例100 примеров на Python

Другие расширения