HDU 2098 分拆素数和 (素数基础)

来源:互联网 发布:java读取zip文件内容 编辑:程序博客网 时间:2024/06/05 06:06

分拆素数和

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 32383    Accepted Submission(s): 14004


Problem Description
把一个偶数拆成两个不同素数的和,有几种拆法呢?
 
Input
输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。
 
Output
对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。

Sample Input
30260

Sample Output
32

Source
2007省赛集训队练习赛(2)
 
注意:小心TLE....

AC代码:

#include<iostream>#include<memory.h>#include<cstdlib>#include<cstdio>#include<cmath>#include<cstring>#include<string>#include<cstdlib>#include<iomanip>#include<vector>#include<list>#include<map>#include<algorithm>typedef long long LL;using namespace std;int prime(int s){for(int i=2;i<=sqrt(s);i++){if(s%i==0) return 0; }return 1;}int main(){int n;  int x,y;while(~scanf("%d",&n),n){int t=0;/*for(int i=1;i<=n;i++){if(i%2==1&&prime(i)){a[i]=1;}}*/int ans=0;for(int i=3;i<n/2;i+=2){if(prime(i)+prime(n-i)==2)ans++;}printf("%d\n",ans);}return 0;}


1 0
原创粉丝点击