HDU 2098 分拆素数和
来源:互联网 发布:如何卸载电脑软件 编辑:程序博客网 时间:2024/06/06 00:39
分拆素数和
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 33755 Accepted Submission(s): 14696
Problem Description
把一个偶数拆成两个不同素数的和,有几种拆法呢?
Input
输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。
Output
对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。
Sample Input
30
26
0
Sample Output
3
2
水题
素数筛一遍 遍历小于n/2的素数k 判断n-k是不是素数
#include<iostream>#include<stdlib.h>#include<stdio.h>#include<string>#include<vector>#include<deque>#include<queue>#include<algorithm>#include<set>#include<map>#include<stack>#include<time.h>#include<math.h>#include<list>#include<cstring>#include<fstream>#include<bitset>//#include<memory.h>using namespace std;#define ll long long#define ull unsigned long long#define pii pair<int,int>#define INF 1000000007const int MAX=10000;bool prime[MAX+5];vector<int>prim;void ini_prim(){ int end=sqrt(MAX+3); fill(prime+2,prime+MAX+3,true); for(int i=2;i<=end;++i) for(int j=i*i;j<=MAX;j+=i) prime[j]=false; prim.push_back(2); for(int i=3;i<=MAX;i+=2) if(prime[i]) prim.push_back(i);}int main(){ //freopen("/home/lu/文档/r.txt","r",stdin); //freopen("/home/lu/文档/w.txt","w",stdout); int n; ini_prim(); while(cin>>n,n){ int res=0; for(int i=0;i<prim.size()&&2*prim[i]<n;++i) if(prime[n-prim[i]]) ++res; cout<<res<<endl; } return 0;}
0 0
- HDU 2098 分拆素数和(素数)
- HDU 2098 分拆素数和
- HDU 2098 分拆素数和
- HDU 2098 - 分拆素数和
- HDU 2098 分拆素数和
- hdu 2098 分拆素数和
- Hdu 2098 分拆素数和
- HDU 2098 分拆素数和
- HDU 2098 分拆素数和
- hdu-2098-分拆素数和。。。
- HDU 2098 分拆素数和
- HDU 2098 分拆素数和
- hdu 2098 分拆素数和
- hdu 2098 分拆素数和 水题
- HDU 2098 分拆素数和
- hdu 2098 分拆素数和
- hdu 2098 分拆素数和
- HDU 2098 分拆素数和
- java中的消息转换器--HttpMessageConverter
- QQ和微信分享之后回不到应用
- MSSQL导入导出数据
- 入门级选手安装theano历程
- BZOJ 4584 [Apio2016]赛艇
- HDU 2098 分拆素数和
- XMPP-TLS和SASL握手
- js获取canvas 的宽和高,到底是多少?
- C++:RIIT
- JavaScript获取HTML DOM节点元素的方法的总结
- 十大Intellij IDEA快捷键
- Android DrawerLayout的使用
- 第k个幸运数字
- $到底是什么-详解jQuery的$符号和init函数