數論基礎之素數,約數

2021-10-09 12:58:27 字數 1777 閱讀 5772

關於約數

唯一分解定理:任何數都可由素因子之積構成

int p[

100]

,a[100

],cnt;

void

divide

(int n)}}

if(n>1)

for(

int i=

1;i<=cnt;i++

)cout<<<

" "<<}

方法2:離線做法,預處理出乙個質因子樹。預處理o(nlogn),查詢乙個數o(logn)

void

init()

}}void

div_it

(int x)

}}

方法1:試除法,判斷乙個數是否是素數,o(sqrt(n))

int

isprime

(int x)

return1;

}

方法2:埃篩,o(nloglogn)

const

int n=

1e7;

int prime[n+

100]

,cnt;

//素數表

int p[n+

100]

;//判斷素數

void

init()

}

方法3:尤拉篩,o(n)

const

int n=

1e7;

int prime[n+

100]

,cnt;

//素數表

int p[n+

100]

;//判斷素數

void

init()

}}

解釋:

方法1:試除法即可,o(sqrt(n))

void

solve

(int n=

100)

}}

方法2:對質因子進行排列組合,o(sqrt(n))

void

solve

(int n)}if

(n>

1)p[

++cnt]

=n,a[cnt]=1

;long

long ans=1;

for(

int i=

1;i<=cnt;i++

)ans*=

(a[i]+1

);}

方法:使用類埃篩,o(nlogn)比試除法的nsqrt(n)優

vector<

int>f[

100005];

void

solve

(int n)

}for

(int i=

1;i<=n;i++

) cout<}}

方法:使用整除分塊求∑in

[n/i

]\sum_i^n [n/i]

∑in​[n

/i]

數論1 素數 約數 反素數

素數是指只能被自身整除和被1整除的數 大於1的自然數,1不是素數 不是素數的數為合數 常見的題型有 素數的判定 素數的篩選兩種題型 素數的篩選 const int n 1000001 int primes n cnt primes存素數 cnt 存素數的個數 bool st n 存數n是否被篩過 v...

數論之 素數

素數又叫質數,乙個數除了1和他本身沒有其他因子的叫素數。最一般的判斷素數寫法 bool prime int x return true 快點的n開平方的複雜度bool prime int x 這是開平方的寫法,減小了查詢範圍。return true bool prime int x 這是乘的寫法,讓...

數論之約數

目錄 題目大意 輸出n個數,分別輸出這n個數所有的約數 include include include using namespace std const int n 1e5 10 vectorsolve int n sort a.begin a.end return a int main 基於算術...