題目:
定義 爲: ,其中 是第 個素數。顯然有 ,且對於 有 是偶數。“素數對猜想”認爲“存在無窮多對相鄰且差爲2的素數”。
現給定任意正整數 ,請計算不超過N的滿足猜想的素數對的個數。
輸入格式:
輸入在一行給出正整數N。
輸出格式:
在一行中輸出不超過N的滿足猜想的素數對的個數。
輸入樣例:
20
輸出樣例:
4
思路:
首先建一個變量n初始化爲0,存儲一共有幾對素數對。然後找到範圍內的所有素數,存入數組中,然後根據題目所給式子判斷,相鄰的兩個素數是否符合要求,如果符合就n++,最後輸出n即可。
AC代碼:
#include <math.h>
#include <iostream>
using namespace std;
int a[10000], number;
void isprime(int N) //判斷是否爲素數
{
number = 0;
for (int i = 2; i <= N; i++) //1不能算是素數,從2開始
{
int flag = 0;
for (int j = 2; j <= sqrt(i); j++)
if (i % j == 0) //不是素數
{
flag = 1;
break;
}
if (!flag)
a[++number] = i;
}
}
int main(void)
{
int N, n = 0;
cout << "請輸入一個數字:";
cin >> N;
isprime(N);
for (int i = 1; i < number; i++)
if (a[i + 1] - a[i] == 2)
n++;
cout << n;
return 0;
}