hdu 2098 分拆素数和(一个偶数拆分成两个不同素数和 拆法数量)
生活随笔
收集整理的這篇文章主要介紹了
hdu 2098 分拆素数和(一个偶数拆分成两个不同素数和 拆法数量)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
傳送門:
http://acm.hdu.edu.cn/showproblem.php?pid=2098
分拆素數(shù)和
Time Limit: 1000/1000 MS (Java/Others)????Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 46434????Accepted Submission(s): 20210
?
Input 輸入包含一些正的偶數(shù),其值不會超過10000,個數(shù)不會超過500,若遇0,則結(jié)束。?
Output 對應(yīng)每個偶數(shù),輸出其拆成不同素數(shù)的個數(shù),每個結(jié)果占一行。?
Sample Input 30 26 0?
Sample Output 3 2?
Source 2007省賽集訓(xùn)隊練習(xí)賽(2) 分析: 偶數(shù)可以對半開,所以外面只需要判斷偶數(shù)的一半有多少種拆分方法就可以了 因為后面的一半和前面的一半是重復(fù)的 比如30拆分:13和17 17和13 是同一個拆分 注意特殊情況 26 26/2=13 13是素數(shù) 所以計算變量需要減1 code: #include<bits/stdc++.h> using namespace std; typedef long long ll; int f(int x)//判斷素數(shù) {if(x==1)return 0;for(int i=2;i<=sqrt(x);i++){if(x%i==0)return 0;}return 1; } int main() {int n;while(~scanf("%d",&n)){if(n==0)break;n=n/2;//偶數(shù)對半開int c=0;for(int i=2;i<=n;i++)//一個數(shù) {int j=2*n-i;//另一個數(shù) 二者之間是和的關(guān)系if(f(i)==1&&f(j)==1){c++;//都是素數(shù)計算器加一 }}if(f(n)==1)//特殊情況 比如 13 13c--;printf("%d\n",c);}return 0; }?
轉(zhuǎn)載于:https://www.cnblogs.com/yinbiao/p/9311865.html
總結(jié)
以上是生活随笔為你收集整理的hdu 2098 分拆素数和(一个偶数拆分成两个不同素数和 拆法数量)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: json对象和json字符串之间的转化
- 下一篇: async异步注解和aspect切面注解