題目:將乙個正整數分解質因數。例如:輸入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的值,重複執行第一步。
程式源**:
#!/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
另一種:
#!/usr/bin/python
# -*- coding: utf-8 -*-
n = raw_input('請輸入乙個整數:')
n = int(n)
print '%d =' %n,
i = 2
while i <= n:
if n%i==0:
if n == i:
print ' %d' %i,
break
else:
n = n/i
print ' %d *' %i,
else:
i += 1
輸出:
請輸入乙個整數:90
90 = 2 * 3 * 3 * 5
Python 練習例項2
題目2 企業發放的獎金根據利潤提成。利潤 i 低於或等於10萬元時,獎金可提10 利潤高於10萬元,低於20萬元時,低於10萬元的部分按10 提成,高於10萬元的部分,可提成7.5 20萬到40萬之間時,高於20萬元的部分,可提成5 40萬到60萬之間時高於40萬元的部分,可提成3 60萬到100萬...
Python 練習例項18
題目18 求s a aa aaa aaaa aa a的值,其中a是乙個數字。例如2 22 222 2222 22222 此時共有5個數相加 幾個數相加有鍵盤控制。我想了兩種方法。第一種,是我看到題目後,直覺的用數學思維去推導 第二種,做完第一種方法,忽然覺得好麻煩,於是想到了畫棋盤,弄成字串後再in...
Python 練習例項17
題目17 輸入一行字元,分別統計出其中英文本母 空格 數字和其它字元的個數。雖然我現在的 書寫還不是很規範,比如不愛注釋,變數名也隨意,但是我相信,我會越來越好,越來越規範的。strlist input put in everything u want 輸入字元 strdict for m in s...