本文共 1282 字,大约阅读时间需要 4 分钟。
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
Note
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, ...
先用素数筛求出1e7中的素数,然后枚举素数。
注意,开判定是否为素数的数组一定要设置成bool类型,不然会报MLE。
#include#include #include #include using namespace std;typedef long long ll;const ll maxn=1e7+5;int t,n;bool is[maxn];int cnt=0;int pri[664590];void judge (){ for (int i=2;i n/2) break; if(is[n-pri[i]]==false) num++; } printf("Case %d: %d\n",Case,num); } return 0;}
转载地址:http://akoen.baihongyu.com/