HDOJ 分拆素数和 2098(素数打表)

来源:互联网 发布:电视机顶盒网络设置 编辑:程序博客网 时间:2024/05/21 08:37

分拆素数和

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


Problem Description
把一个偶数拆成两个不同素数的和,有几种拆法呢?
 

Input
输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。
 

Output
对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。
 

Sample Input
30260
 

Sample Output
32
 

Source
2007省赛集训队练习赛(2)
 

Recommend
lcy   |   We have carefully selected several similar problems for you:  1262 1431 2093 2138 2521 
 


素数打表。。

 

#include<stdio.h>#include<algorithm>#include<string.h>#include<math.h>#define N 10000+10 using namespace std;bool isprime[10010];int prime[10010];void is_prime(){for(int i=0;i<N;i++)isprime[i]=false;isprime[0]=isprime[1]=true;int tot=0;for(int i=2;i<N;i++){if(!isprime[i]){for(int j=2*i;j<N;j+=i)isprime[j]=true;prime[tot++]=i;}}}int main(){int n;is_prime();while(scanf("%d",&n),n){int sum=0;for(int i=0;prime[i]<n;i++){for(int j=0;prime[j]<n;j++){if(i==j)continue;if(prime[i]+prime[j]==n)sum++;}}printf("%d\n",sum/2);//有重复的,所以除2。}return 0;}


 

0 0
原创粉丝点击