用python實現將乙個正整數分解素因數,以素因數的指數權重的形式來表達。例如
表示成元組字典的形式
先定義素數池:
primepool = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,79,83,89,97,101,103,107,109,113]
實現:
def factorizationtoprime(num):
if num == 1:
return {}
pdict = {}#素因數字典
d = num#縮倍值
p = 2#輪循因數
sq = math.sqrt(num)
for m in primepool:
p = m
if p>sq:
break
while math.fmod(d,p)==0:
d = d/p
if p in pdict:
pdict[p] = pdict[p]+1
else:
pdict[p] = 1
if math.fmod(d,p)!=0:
sq = math.sqrt(d)
while p<=sq:
p = p+2
if isprime(p):
while math.fmod(d,p)==0:
d = d/p
if p in pdict:
pdict[p] = pdict[p]+1
else:
pdict[p] = 1
if math.fmod(d,p)!=0:
sq = math.sqrt(d)
if d>1:
pdict[math.floor(d)]=1
return pdict
函式 isprime 請參見python判斷乙個正整數是否為素數的演算法。 分解正整數的質因數
首先,由算術基本定理可知,任何乙個大於1的正整數,都可以分解成若干個質數的乘積,並且這種乘積的形式是唯一的。所以,對於整數分解,如果先從最小的質數n 2開始進行分解,如果能整除,就只取商,直到不能除時,n 然後判斷n是否大於現在的商。如果大於,結束程式。否則繼續迴圈。核心 很短,只有10行左右。vo...
求整數N的質因數
暴力解決 先找出整數n的所有因數,再提出到其中不是質數的因數。有一種題,整數n由其所有質因數的積來表示 eg 35 3 5,24 2 2 2 3如何求解的問題 include include include includeusing namespace std int main for vector...
機試 ProblemC(整數的最大素因子)
對於給定的字串行,從左至右將所有的數字字元取出拼接成乙個無符號整數 字串行長度小於100,拼接出的整數小於2 31,計算並輸出該整數的最大素因子 如果是素數,則其最大因子為自身 有多組資料,輸入資料的第一行為乙個正整數,表示字串行的數目,每組資料為一行字串行。對每個字串行,取出所得整數的最大素因子,...