2.素數對猜想【數據結構—起步能力自測題】

題目:

  定義 dnd​_n​​ 爲: dn=pn+1pnd_n=p_{n+1}−p_n,其中 pip_​i是第 ii 個素數。顯然有 d1=1d_1=1,且對於 n>1n>1dnd_​n 是偶數。“素數對猜想”認爲“存在無窮多對相鄰且差爲2的素數”。
  現給定任意正整數 N(<105)N(<10^5),請計算不超過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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章