求乙個數的質數和表示式,有多少種不同的方式。
乍一看去,好像比較麻煩,貌似需要每個表示式都要列舉再統計。但只要冷靜分析,其實不難發現其實
就只是乙個完全揹包(每個質數都沒有限制),所以其實整個程式只要由素篩(素數篩選法)+完全揹包的
套
路即可。
#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...