1007 素数对猜想

123 阅读1分钟

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

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

输入格式:

输入在一行给出正整数N

输出格式:

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

输入样例:

20

输出样例:

4
/*
 * @Author: Spring Breeze
 * @Date: 2021-06-29 19:48:16
 * @FilePath: \algorithm\test.c
 * @LastEditTime: 2022-03-28 20:00:10
 */

#include <stdio.h>
#include <stdbool.h>
#include <math.h>

int main()
{
  long N;
  while (scanf("%ld", &N) != EOF)
  {
    // 计算素数猜想对,上一个素数
    long count = 0, last = 0;
    for (long i = 3; i <= N; i += 2)
    {
      // 是否不为素数
      bool flag = false;
      // 只需要计算根号内
      for (long j = 3; j < sqrt(i) + 1; j++)
        if (i % j == 0)
        {
          flag = true;
          break;
        }
      // 为素数
      if (!flag)
      {
        if (last && i - last == 2)
          count++;
        last = i;
      }
    }
    printf("%ld", count);
  }
  return 0;
}