快速求n的質因子 數論

2022-03-10 22:33:59 字數 472 閱讀 4384

如何盡快地求出n的質因子呢?我們這裡又涉及兩個好的演算法了!

第乙個:用於每次只能求出乙個數的質因子,適用於題目中給的n的個數不是很多,但是n又特別大的#includeint main()

}if(n>1)

a[num++]=n;

for(i=0;i第二個:一次求出1~n的所有數的質因子,適用於題目中給的n個數比較多的,但是n不是很大的。

#include#include#include#includeusing namespace std;

int visited[100010];

vectora[100010];

void init()}}

}int main()

{ int i,j;

init();

for(i=0;i<=50;i++)

{printf("%d:",i);

for(j=0;j

**自:

求n的質因子

質因子 或質因數 在數論裡是指能整除給定正整數的質數。根據算術基本定理,不考慮排列順序的情況下,每個正整數都能夠以唯一的方式表示成它的質因數的乘積。兩個沒有共同質因子的正整數稱為互質。因為1沒有質因子,1與任何正整數 包括1本身 都是互質。只有乙個質因子的正整數為質數,質數的質因子就是它本身。將乙個...

求n個數 1 n 的質因子

求n個數 1 n 的質因子,我用到了素數篩選法的思想,例如找到素數2,2是2,4,6,8,10 的質因子,3是3,6,9,12 的質因子,然後找到素數5,若是求乙個數n的質因子,請參考 include includeint a 10001 20 b 10001 b i 表示第i個數的質因子個數,a ...

質因子 容斥原理求與n互質的個數

求乙個數的質因子,將質因子儲存在a,並返回質因子的個數 int init ll n if n 1 這裡要記得 a idx n return idx 1 求 1,m 內與n互質的個數,用佇列陣列實現容斥原理 ll fid ll m for ll i 1 i t i sum sum m que i re...