每日一题——素数对猜想

素数对猜想

题目来源:PTA试题库


让我们定义d​n​​为:d​n​​=p​n+1​​−p​n​​,其中p​i​​是第i个素数。显然有d​1​​=1,且对于n>1有d​n​​是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。

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

输入格式:

输入在一行给出正整数N

输出格式:

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


代码

#include 
#include

int count = 0;
int state = 0;
int su = 3;
int su_1=3;

int Sushu(int a)  //判断是否为素数
{
	int k = (int)sqrt(a);
	int i;
	for (i = 2; i <= k; i++)
	{
		if (a%i == 0) break;
	}
	if (i > k)  //是素数则讲前一个素数保存,并记录下当前素数,状态置1
	{
		su_1 = su;
		state = 1;
		su = a;
	}
	else state = 0;
	//printf("%d", count);
	return 0;
}


int main()
{
	int n;
	scanf("%d", &n);
	for (int i = 3; i <= n; i += 2)
	{
		Sushu(i);
		if (state)
		{
			if (i - su_1 == 2) count += 1; //相邻两个素数,计数+1
			state = 0;
		}
	}
	
	printf("%d", count);

	getch();
	return 0;
}

总结:

  1. scanf的返回值:接收的变量个数
  2. 判断素数:先开根号再计算

你可能感兴趣的:(数据结构)