PAT --- 1007.素数对猜想 (20 分)

1007 素数对猜想 (20 分)

让我们定义dnd_ndn为:dn=pn+1−pnd_n = p_{n+1}-p_ndn=pn+1pn,其中pip_ipi是第iii个素数。显然有d1=1d_1 = 1d1=1,且对于n>1n>1n>1dnd_ndn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。

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

输入格式:

输入在一行给出正整数N

输出格式:

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

输入样例:

20

输出样例:

4

思路

  1. 写一个判断是否为素数的函数;
  2. 使用初始值记录每一次计算出的素数值,并用当前素数值减去前一个素数值,等于2nCount+1

代码

#include 
#include 
using namespace std;

bool isPrime(int n) {
	if (n <= 0)	return false;
	int num = int(sqrt(1.0 * n));
	for (int i = 2; i <= num; i++)
		if (n % i == 0)	return false;
	return true;
}

int main() {
	int n, num = -2, nCount = 0;
	cin >> n;
	for (int i = 1; i <= n; i++)	{
		if (isPrime(i)) {			//是素数
			if (i - num == 2)
				nCount++;
			num = i;				//替换当前素数
		}
	}
	cout << nCount;
	return 0;
}

你可能感兴趣的:(PAT,乙级)