[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;
} 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章