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