整數的素因數權重分析

2021-10-03 10:47:13 字數 1031 閱讀 3971

用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,計算並輸出該整數的最大素因子 如果是素數,則其最大因子為自身 有多組資料,輸入資料的第一行為乙個正整數,表示字串行的數目,每組資料為一行字串行。對每個字串行,取出所得整數的最大素因子,...