hdu 2098 分拆素数和(一个偶数拆分成两个不同素数和 拆法数量)
生活随笔
收集整理的這篇文章主要介紹了
hdu 2098 分拆素数和(一个偶数拆分成两个不同素数和 拆法数量)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
傳送門:
http://acm.hdu.edu.cn/showproblem.php?pid=2098
分拆素?cái)?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ù),其值不會(huì)超過10000,個(gè)數(shù)不會(huì)超過500,若遇0,則結(jié)束。?
Output 對(duì)應(yīng)每個(gè)偶數(shù),輸出其拆成不同素?cái)?shù)的個(gè)數(shù),每個(gè)結(jié)果占一行。?
Sample Input 30 26 0?
Sample Output 3 2?
Source 2007省賽集訓(xùn)隊(duì)練習(xí)賽(2) 分析: 偶數(shù)可以對(duì)半開,所以外面只需要判斷偶數(shù)的一半有多少種拆分方法就可以了 因?yàn)楹竺娴囊话牒颓懊娴囊话胧侵貜?fù)的 比如30拆分:13和17 17和13 是同一個(gè)拆分 注意特殊情況 26 26/2=13 13是素?cái)?shù) 所以計(jì)算變量需要減1 code: #include<bits/stdc++.h> using namespace std; typedef long long ll; int f(int x)//判斷素?cái)?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ù)對(duì)半開int c=0;for(int i=2;i<=n;i++)//一個(gè)數(shù) {int j=2*n-i;//另一個(gè)數(shù) 二者之間是和的關(guān)系if(f(i)==1&&f(j)==1){c++;//都是素?cái)?shù)計(jì)算器加一 }}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切面注解