[1007]. 素数对猜想 (20)

题目

[1007]. 素数对猜想 (20)

时间限制 400 ms内存限制 65536 kB代码长度限制 8000 B判题程序 Standard 作者 CHEN, Yue

让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数。显然有 d1=1 且对于n>1有 dn 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N (< 105),请计算不超过N的满足猜想的素数对的个数。
输入格式:每个测试输入包含1个测试用例,给出正整数N。
输出格式:每个测试用例的输出占一行,不超过N的满足猜想的素数对的个数。
输入样例:
20
输出样例:
4

思路!!!:

为了节约时间循环的起点可以从3开始(作为素数2不满足条件),而且一切大于2的偶数都不可能为素数,所以没必要进行素数的判断所以控制循环的i以i+=2的方式递增。刚开始做的时候因为素数判断的方式不够优化导致内存超时,所以老大推荐了另外一种以i*i<=n的方式递增的循环方式
c++代码如下:

#include"iostream"
using namespace std;
bool check(int n)           //素数判定函数
{
  int i;
  for(i=2;i*i<=n;i++)        //i*i<=n减少时间  
  {
    if(n%i==0)
    return false;
  }
  return true;
}
int main()
{
  int n;
  int ant=0;
  int i=3;
  cin>>n;
  for(;i+2<=n;i+=2)
  {
    if(check(i))
    {
      if(check(i+2))
      {
        ant++;
      }
      else 
      i+=2;

    }

  }
  cout<<ant;
  return 0;
} 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章