LightOJ
来源:互联网 发布:成都网络综合布线 编辑:程序博客网 时间:2024/06/16 17:10
题意:
给定n,找到两个素数,想加得到n,问有多少中方法;
思路:
筛法打个素数表,枚举小于等于(n/2)的所有素数prim[ i ],判(n - prim[ i ])是不是素数
#include<iostream>#include<algorithm>#include<cstdio>#include<cstdlib>#include<cstring>#include<string>#include<cmath>#include<set>#include<queue>#include<stack>#include<map>#define PI acos(-1.0)#define in freopen("in.txt", "r", stdin)#define out freopen("out.txt", "w", stdout)using namespace std;typedef long long ll;typedef unsigned long long ull;const int maxn = 1e7 + 7, maxd = 670000 + 7, mod = 1e9 + 7;const int INF = 0x7f7f7f7f;int T, n, cnt;bool p[maxn];vector<int> prim;void init() { memset(p, 1, sizeof p); for(int i = 4; i < maxn; i += 2) p[i] = 0; cnt = 0; prim.push_back(2); for(int i = 3; i < maxn; i += 2) { if(p[i]) prim.push_back(i); for(int j = 0; j < prim.size() && i*prim[j] < maxn; ++j) p[i*prim[j]] = 0; }}void solve() { int ans = 0; for(int i = 0; i < prim.size() && 2*prim[i] <= n; ++i) { if(p[n-prim[i]]) ans++; } cout << ans << endl;}int main() { init(); scanf("%d", &T); for(int tt = 1; tt <= T; ++tt) { scanf("%d", &n); printf("Case %d: ", tt); solve(); } return 0;}
阅读全文
1 0
- LightOJ
- LightOJ
- LightOJ
- LightOJ
- LightOJ
- [LightOJ
- LightOJ
- LightOJ
- LightOJ
- LightOJ
- LightOJ
- LightOJ
- LightOJ
- LightOJ
- LightOJ
- LightOJ
- LightOJ
- LightOJ
- 配置各台虚拟机之间免秘钥登录
- ProtoBuf 的基本介绍
- 朴素的模式匹配算法
- C++函数的返回值(下)
- 7.log4j2的使用
- LightOJ
- 方法参数
- python-正则表达式
- HDU-1394-Minimum Inversion Number树状数组
- ORA-01691: unable to extend lob segment 问题解决
- 普通程序员如何入门深度学习?
- centos环境下如何配置yum源
- sql monitor 实践
- Java将图片处理成背景透明的圆形图片