当前位置: 代码迷 >> 综合 >> 分拆素数和——hdu2098
  详细解决方案

分拆素数和——hdu2098

热度:61   发布时间:2023-09-24 07:31:54.0
分拆素数和
Time Limit:1000MS    Memory Limit:32768KB    64bit IO Format:%I64d & %I64u
Submit Status Practice HDU 2098

Description

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

Input

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

Output

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

Sample Input

        
30 26 0

Sample Output

        
3 2

#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
bool num[10005];
void f()
{int i,j;memset(num,true,sizeof(num));num[0]=false;num[1]=false;for(i=2;i<10001;i++)if(num[i])for(j=2*i;j<10005;j+=i)num[j]=false;
}
int main()
{int ans;int a;f();while(cin>>a&&a!=0){ans=0;for(int i=a/2+1;i<a;i++){int j=a-i;if(num[j]&&num[i])ans++;}cout<<ans<<endl;}return 0;
}




  相关解决方案