Python 練習例項14 正整數分解質因數

2021-08-24 17:41:33 字數 1355 閱讀 1273

題目:將乙個正整數分解質因數。例如:輸入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...