파이썬은 운동 (14)
제목 : 품질 인자의 양의 정수 분해. 예를 들어 : 90 = 2 * 3 * 3 * 5 인쇄 90을 입력합니다.
프로그램 분석 : N 품질 요소의 분해는 먼저 다음 단계에있어서, 가장 작은 소수 번호 k를 발견한다 :
N 정확히 동일한 소수, 프로세스의 품질 인자의 분해가 종료 한 경우 (1)에서는 프린트 할 수있다.
(2) N <> K, k는하지만, N, K의 값을 출력 n을 지수로 나눈 값과 케이한다 나눌 수 있다면, 당신은 새로운 양의 정수 n으로, 첫 번째 단계를 반복합니다.
(3) n이 K로 나눌 수없는 경우, K + 1은 제 1 단계를 반복하여 K의 값으로서 사용된다.
소스 코드 :
#!/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)
위 예제의 출력은 다음과 같습니다
90 = 2 * 3 * 3 * 5 100 = 2 * 2 * 5 * 5