5 5 質因數分解

2022-07-01 14:33:10 字數 1310 閱讀 7070

⚠️完美數的定義是其不等於本身的因子之和等於其本身,也就是說完美數所有因子和等於本身的2倍

大體解題思路:

要得到乙個數n的各因子之和,要先得到n的所有質因數。則將問題轉換為求解n的所有質因數

要求解n的質因數,首先要對素數打表,此處為盡可能節約時間,採用埃式篩法【o(nloglogn)】

ps:若只需求乙個數的所有因子個數,則不用寫出結構體factor,只需統計所有cnt的個數即可(可以簡化**)

對**的解釋

定義prime記錄所有的素數,pnum為素數個數;bool型陣列p中 p[i]表示i是否為素數,false為是,true為否。

【此為埃式篩法的內容】

factor表示乙個質因子,x為質因子具體數值,cnt為此質因子的個數,求解質因子步驟大致為:

質因數分解

題目16 將乙個正整數分解質因數。例如 輸入90,列印出90 2 3 3 5。程式分析 對n進行分解質因數,應先找到乙個最小的質數k,然後按下述步驟完 成 1 如果這個質數恰等於n,則說明分解質因數的過程已經結束,列印出即可。2 如果n k,但n能被k整除,則應列印出k的值,並用n除以k的商,作為新...

質因數分解

短除法 求乙個數分解質因數,要從最小的質數除起,一直除到結果為質數為止。分解質因數的算式的叫短除法 和除法的性質差不多,還可以用來求多個個數的公因式 求 最大公因數的一種方法,也可用來求 最小公倍數。求幾個數最大公因數 的方法,開始時用觀察比較的方法,即 先把每個數的因數找出來,然後再找出公因數,最...

質因數分解

講乙個數分解為幾個質數相乘的結果 int a maxn 用來存質因數 int b maxn 用來存質因數的個數 int main if n 1 不能忘記這一步操作 輸出 第1種寫法 a a a b b b b c c printf 第一種寫法 for int i 1 i tot i else pri...