题目
让我们定义dn为:dn = pn+1 - pn, 其中pi是第i个素数。显然有d1=1且对于n>1有dn是偶数。”素数对猜想”认为”存在无穷多对相邻且差为2的素数”。
现给定任意正整数N(<105),请计算不超过N的满足猜想的素数对的个数。
输入格式: 每个测试输入包含1个测试用例,给出正整数N。
输出格式: 每个测试用例的输出占一行,不超过N的满足猜想的素数对的个数。
输入样例:
20
输出样例:
4
我的解决方案
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| #include <stdio.h> #include <stdbool.h>
bool isPrime(int num) { if (num < 1) { return false; }
for (int i = 2; i * i <= num; ++i) { if (num % i == 0) { return false; } }
return true; }
int generatePrime(int num) { if (num < 1) { return 1; }
while (!isPrime(++num)) { }
return num; }
int primeGuess(int n) { int count = 0; int prim1, prim2;
prim1 = 1; while ((prim2 = generatePrime(prim1)) <= n) { if (prim2 - prim1 == 2) { ++count; } prim1 = prim2; }
return count; }
int main(void) { int n;
scanf("%d", &n); printf("%d\n", primeGuess(n));
return 0; }
|