打表,把所有的素数找出来,并且还要把那些数是素数标记下
Difference Between Primes
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2281 Accepted Submission(s): 642
Problem Description
All you know Goldbach conjecture.That is to say, Every even integer greater than 2 can be expressed as the sum of two primes. Today, skywind present a new conjecture: every even integer can be expressed as the difference of two primes.
To validate this conjecture, you are asked to write a program.
Input
The first line of input is a number nidentified the count of test cases(n<10^5). There is a even number xat the next nlines. The absolute value of xis not greater than 10^6.
Output
For each number xtested, outputstwo primes aand bat one line separatedwith one space where a-b=x. If more than one group can meet it, output the minimum group. If no primes can satisfy it, output ‘FAIL‘.
Sample Input
3 6 10 20
Sample Output
11 5 13 3 23 3
Source
2013 ACM/ICPC Asia Regional Online —— Warmup
#include <iostream> #include <stdio.h> #include <stdio.h> #include <string.h> #include <algorithm> #include <math.h> #include<string> #include <queue> #include<map> #define ll long long #define N 1000010 #define eps 1e-6 #define pi acos(-1.0) using namespace std; const int INF = (1 << 30); bool isprime[N]; int prime[N], primenum;//有primenum个素数 math.h void PRIME(){ primenum = 0; memset(isprime, false, sizeof(isprime)); isprime[2] = true; prime[primenum++] = 2; for (int i = 3; i < N; i += 2) for (int j = 0; j<primenum; j++) if (i%prime[j] == 0)break; else if (prime[j]>sqrt((double)i) || j == primenum - 1) { prime[primenum++] = i; isprime[i] = true; break; } } int main() { PRIME(); int t, n; cin >> t; while (t--) { cin >> n; int flag = 0; for (int i = 0; i < primenum; i++) { if (prime[i] > n && isprime[prime[i] - n]) { flag = 1; printf("%d %d\n", prime[i], prime[i] - n); break; } } if (!flag) puts("FAIL"); } return 0; }