让我们定义d为:d = pp,其中p是第i个素数。显然有d=1,且对于n>1有d是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。

现给定任意正整数N(<10),请计算不超过N的满足猜想的素数对的个数。

输入格式:

输入在一行给出正整数N

输出格式:

在一行中输出不超过N的满足猜想的素数对的个数。

输入样例:

  1. 20

输出样例:

  1. 4

代码

C语言实现

  1. #include<stdio.h>
  2. #include<stdbool.h>
  3. bool isPrime(int N) {
  4. if(N <= 1)
  5. return false;
  6. else {
  7. for(long long int i = 2; i * i <= N; i++) {
  8. if(N % i == 0)
  9. return false;
  10. }
  11. return true;
  12. }
  13. }
  14. int main() {
  15. int number;
  16. scanf("%d", &number);
  17. int PrimeCounter = 0; /* 记录素数个数 */
  18. int primeNumber[100001];
  19. for(int i = 0; i <= number; i++) {
  20. if(isPrime(i))
  21. primeNumber[PrimeCounter++] = i;
  22. }
  23. int answerCounter = 0; /* 答案要找的 素数对 */
  24. for(int i = 0; i < PrimeCounter; i++) {
  25. if((i + 1) <= PrimeCounter && primeNumber[i + 1] - primeNumber[i] == 2) {
  26. answerCounter++;
  27. }
  28. }
  29. printf("%d", answerCounter);
  30. return 0;
  31. }