Python整數因子分解

2021-09-27 16:48:11 字數 2166 閱讀 1782

《計算機演算法設計與分析》課後練習題

問題描述:

大於1 的正整數n 可以分解為:n=x1 *x 2 *…*xm。

例如,當n= 12 時,共有8 種不同的分解式:

12= 12;

12=6x2;

12=4x3;

12=3x4;

12=3x2x2;

12=2x6;

12=2x3x2;

12=2x2x3。

程式設計任務:

對於給定的正整數n,程式設計計算n 共有多少種不同的分解式。

輸入資料第一行有1 個正整數n (1≤n≤2000000000) 。

將計算出的不同的分解式數。

輸入 輸出

input.txt output.txt

12 8

def

factorization

(n):

for i in

range(2

,n):

if n%i==0:

#當n%i=0時表示i為n的乙個因子

global count

count=count+

1#輸出n的一種分解式,用於驗證

print

("{}*{}={} count={}"

.format

(i,n//i,n,count)

)#繼續分解n的乙個因子i

factorization(i)

#從檔案中讀出資料

file_readpath =

'input.txt'

with

open

(file_readpath)

asfile

: txt =

file

.read()n=

eval

(txt)

#初始化count=1,代表n=n*1的情況

count=

1factorization(n)

#輸出結果用於驗證

print

("{}共有{}種不同的分解式"

.format

(n,count)

)#將結果存入檔案output.txt

file_writepath =

'output.txt'

file

=open

(file_writepath,

"w")

file

.write(

str(count)

)file

.close(

)

def

factorization

(n):

if n ==1:

#當商為1時即為已經算出一次分解累計+1

global count

count=count+

1for i in

range(2

,n+1):

#每個數進行遍歷

if n%i ==0:

#餘數為0時 即為可分解的數

factorization(n//i)

#進行分解

return count

#從檔案中讀出資料

file_readpath =

'input.txt'

with

open

(file_readpath)

asfile

: txt =

file

.read()n=

eval

(txt)

#初始化count=0

count=

0factorization(n)

#輸出結果用於驗證

print

("{}共有{}種不同的分解式"

.format

(n,count)

)#將結果存入檔案output.txt

file_writepath =

'output.txt'

file

=open

(file_writepath,

"w")

file

.write(

str(count)

)file

.close(

)

整數因子分解

時間限制 1000ms 記憶體限制 1000k 提交次數 0 通過次數 0 題型 程式設計題 語言 g gcc vc 大於1的正整數 n 都可以分解為 n x1 x2 xm,每個xi為大於1的因子,即1 第一行乙個正整數n 1 n 1000000 不同的分解式數目 12 8 此題因子講順序的.第乙個...

整數因子分解

大於1的正整數 n 都可以分解為 n x1 x2 xm,每個xi為大於1的因子,即1例如 當n 12時,共有8種不同的分解式 12 12 12 62 12 43 12 34 12 322 12 26 12 232 12 223 對於給定正整數n,計算n共有多少種不同的分解式。此題因子講順序的.第乙個...

整數因子分解

大於1的正整數n可以分解為 n x1 x2 xm.例如,當n 12時,共有8種不同的分解式 12 12 12 6 2 12 4 3 12 3 4 12 3 2 2 12 2 6 12 2 3 2 12 2 2 3 對於給定的正整數n,程式設計計算n共有多少種不同的分解式。輸入資料有多行,給出正整數n...