AcWing 197階乘分解

2021-10-08 20:19:04 字數 880 閱讀 6743

題目描述:

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

題解:

首先這個題目肯定需要做乙個篩子,但是n!的值實在太大,所以直接計算階乘後打表肯定不現實。

但是我們注意道,對於n!,乙個質因子p的個數取決於1~n這n個數中有多少個質因子p,最後對於p的答案只需要相加即可

那麼問題就變成了:如何求1~n中的p的個數?

我們知道,在1~n中,p的倍數有,n/p個,但是我們注意到,這n個數中可能有p的平方的倍數、p的三次方的倍數…所以我們需要在此基礎上加上n / p ^ 2 + n / p ^ 3+ …注意p ^ k <= n.這就算出了n!中的所有質因子p的個數了!

ac**:

#include

#include

#include

#include

#include

#include

using

namespace std;

const

int maxn =

1e6;

int v[maxn]

,p[maxn]

,cnt =0;

int ans[maxn]=;

void

get_prime

(int n)

return;}

intmain()

}for

(int i =

1;i <= maxn;i++

)return0;

}

AcWing 197 階乘分解

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

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...