《計算機演算法設計與分析》課後練習題
問題描述:
大於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...