AcWing 197 階乘分解

2021-09-28 21:06:14 字數 885 閱讀 9797

給定整數 n ,試把階乘 n! 分解質因數,按照算術基本定理的形式輸出分解結果中的 pi 和 ci 即可。

輸入格式

乙個整數n。

輸出格式

n! 分解質因數後的結果,共若干行,每行一對pi,ci,表示含有pcii項。按照pi從小到大的順序輸出。

資料範圍

1≤n≤106

輸入樣例:

5輸出樣例:

2 33 1

5 1樣例解釋

5 ! =120=2^3∗3∗5

.思路:

本來不知道怎麼寫的,我直接用線性篩找出n以內的素數之後,用算數基本定理統計1—n每個數含有該質因子的個數,然後相加;果然 超時;

看了y總講的定理之後,從1—n這n個數,含有質因子p的總數為

sum= n/p + n/p²+ … n/plogpn (對於n/p²,本來應該乘上2,但是由於有p之前n/p的時候計算了一次,三次方也類似)

所以前面不變,後邊用這個規律即可;

(n=1000000時,30毫秒就可以過)

#include

using

namespace std;

const

int maxx=

1e6+7;

int pre[maxx]

,cnt;

bool str[maxx]

;int dis[maxx]

;map<

int,

int> mp;

void

primes

(int n)

//線性篩篩一遍}}

}int

main()

return0;

}

AcWing197階乘分解

n 的最大質因子不超過n。先質數篩出n以內質數,然後算在n!出現了多少次。對於質數p,只有質數p的倍數才含p。至少含有乙個p的有 include include include define ms a,b memset a,b,sizeof a define inf 0x3f3f3f3f defin...

AcWing 197 階乘分解

給定整數 n 試把階乘 n 分解質因數,按照算術基本定理的形式輸出分解結果中的 pi 和 ci 即可。輸入格式 乙個整數n。輸出格式 n 分解質因數後的結果,共若干行,每行一對pi,ci,表示含有pcii項。按照pi從小到大的順序輸出。資料範圍 1 n 106 輸入樣例 5輸出樣例 2 33 1 5...

AcWing 197階乘分解

題目描述 給定整數 n 試把階乘 n 分解質因數,按照算術基本定理的形式輸出分解結果中的 pi 和 ci 即可。題解 首先這個題目肯定需要做乙個篩子,但是n!的值實在太大,所以直接計算階乘後打表肯定不現實。但是我們注意道,對於n 乙個質因子p的個數取決於1 n這n個數中有多少個質因子p,最後對於p的...