LightOJ - 1259 Goldbach`s Conjecture【素筛&小细节】
2018-02-03 23:28
302 查看
LightOJ - 1259 Goldbach`s Conjectur.
Goldbach’s conjecture is one of the oldest unsolved problems in number theory and in all of mathematics. It states:
Every even integer, greater than 2, can be expressed as the sum of two primes [1].
Now your task is to check whether this conjecture holds for integers up to 107.
Input
Input starts with an integer T (≤ 300), denoting the number of test cases.
Each case starts with a line containing an integer n (4 ≤ n ≤ 107, n is even).
Output
For each case, print the case number and the number of ways you can express n as sum of two primes. To be more specific, we want to find the number of (a, b) where
1) Both a and b are prime
2) a + b = n
3) a ≤ b
Sample Input
2
6
4
Sample Output
Case 1: 1
Case 2: 1
Hint
1. An integer is said to be prime, if it is divisible by exactly two different integers. First few primes are 2, 3, 5, 7, 11, 13, …
题意:
给你一个n,满足哥德巴赫猜想的组数 (n=a+b,(a,b)均为质数)(n=a+b,(a,b)均为质数).
分析:
一个素筛+打表就好,但是内存有限制,小技巧点:筛素数时用bool类型定义数组.
Goldbach’s conjecture is one of the oldest unsolved problems in number theory and in all of mathematics. It states:
Every even integer, greater than 2, can be expressed as the sum of two primes [1].
Now your task is to check whether this conjecture holds for integers up to 107.
Input
Input starts with an integer T (≤ 300), denoting the number of test cases.
Each case starts with a line containing an integer n (4 ≤ n ≤ 107, n is even).
Output
For each case, print the case number and the number of ways you can express n as sum of two primes. To be more specific, we want to find the number of (a, b) where
1) Both a and b are prime
2) a + b = n
3) a ≤ b
Sample Input
2
6
4
Sample Output
Case 1: 1
Case 2: 1
Hint
1. An integer is said to be prime, if it is divisible by exactly two different integers. First few primes are 2, 3, 5, 7, 11, 13, …
题意:
给你一个n,满足哥德巴赫猜想的组数 (n=a+b,(a,b)均为质数)(n=a+b,(a,b)均为质数).
分析:
一个素筛+打表就好,但是内存有限制,小技巧点:筛素数时用bool类型定义数组.
#include <cstdio> #include <algorithm> #include <cstring> #include <cmath> using namespace std; typedef long long LL; const int MAXN = 1e7 + 5; bool a[MAXN]; int b[2000000]; int p = 0; void init() { a[0] = a[1] = 1; for(int i = 2; i * i < MAXN; ++i) { if(a[i]) continue; for(int j = i * i; j < MAXN; j += i) { a[j] = 1; } } for(int i = 0; i < MAXN; i++) { if(!a[i]) { b[p++] = i; } } //printf("%d\n", p); } int main() { init(); int T, n; scanf("%d", &T); while(T--) { scanf("%d", &n); int ans = 0; for(int i = 0; i < p; i++) { if(n / 2 < b[i]) break; if(!a[n - b[i]]) ans++; } static int t = 1; printf("Case %d: %d\n", t++, ans); } 4000 return 0; }
相关文章推荐
- LightOJ 1259 - Goldbach`s Conjecture (分解偶数为两个素数之和)
- LightOJ - 1259 Goldbach`s Conjecture 素数打表+暴力(我见过的最快的打表姿势)
- LightOJ - 1259 Goldbach`s Conjecture (素数筛)
- Hdu 4715 Difference Between Primes (2013网络赛 warm up) & LightOJ 1259 Goldbach`s Conjecture(素数和差)
- LightOJ 1259 Goldbach`s Conjecture(数论)
- Lightoj1259——Goldbach`s Conjecture(哥德巴赫猜想)
- LightOJ-1259 Goldbach`s Conjecture 数论 素数筛
- lightoj1259 - Goldbach`s Conjecture(水题)
- LightOJ 1259 Goldbach`s Conjecture (哥德巴赫猜想 + 素数筛选法)
- lightOJ 1259 Goldbach`s Conjecture
- LightOJ 1259 Goldbach`s Conjecture(素数问题,思维)
- LightOJ 1259 Goldbach`s Conjecture
- LightOJ 1259 Goldbach`s Conjecture
- LightOJ 1259 Goldbach`s Conjecture
- LightOJ 1259 Goldbach`s Conjecture 水题
- LightOJ 1259 Goldbach`s Conjecture(证明哥德巴赫猜想)
- LightOJ - 1259 Goldbach`s Conjecture
- Goldbach`s Conjecture LightOJ - 1259 (素数筛选法)
- 【LightOJ1259】Goldbach`s Conjecture(数论)
- LightOJ - 1259 Goldbach`s Conjecture