SSL P1197 質數和分解

2021-08-14 14:25:48 字數 659 閱讀 7244

求乙個數的質數和表示式,有多少種不同的方式。

乍一看去,好像比較麻煩,貌似需要每個表示式都要列舉再統計。但只要冷靜分析,其實不難發現其實

就只是乙個完全揹包(每個質數都沒有限制),所以其實整個程式只要由素篩(素數篩選法)+完全揹包的

即可。

#include#includeusing namespace std; 

int x[210],a[210],w[210];

int main()

i++;

} k=0;

for(i=1;i<=n;i++) if(x[i]==0) a[++k]=i;//a陣列為統計所有在n以內的素數

w[0]=1;//初始化

for(i=1;i<=k;i++)//完全揹包

for(j=a[i];j<=n;j++)

w[j]+=w[j-a[i]];//因為這裡一定會大於w[j],所以不用判斷

cout

}

質數和分解

本題可以參考集合求數 分解成質數之和,所以首先得求素數。由於本題資料不大,打個暴力也行。由於可以分解為多個相同質數的和,所以本題是完全揹包。f i j 表示前i個素數和為j的方案數,對於第i個素數,有取和不取兩種方案,本題有是求方案數,轉移方程就成了 f i j f i 1 j f i 1 j w ...

質數和分解 prime

問題描述 任何大於1的自然數n,都可以寫成若干個大於等於2且小於等於n的質數之和表示式 包 括只有乙個數構成的和表示式的情況 並且可能有不止一種質數和的形式。例如9的質數和 表示式就有四種本質不同的形式 9 2 5 2 2 3 2 2 3 3 3 2 7。這裡所謂兩個本質相同的表示式是指可以通過交換...

HDU 4497 質數分解和計數)

如果l g 0,說明一定無解。把k l g質數分解,l g p1 t1 p2 t2 p3 t3 同時 x g,y g,z g,不影響結果。假設三個數字的質數分解是 x p1 i1 p2 i2 p3 i3 y p1 j1 p2 j2 p3 j3 z p1 k1 p2 k2 p3 k3 要保證x,y,z...