其他分享
首页 > 其他分享> > 蓝桥杯等差素数列

蓝桥杯等差素数列

作者:互联网

#include <stdio.h>
#include <string.h>
#include <stdbool.h>
//验证上限
#define maxSize 10000000

bool isPrime[maxSize];//是否是素数
int prime[maxSize];//存素数

int main(void)
{
	/*埃氏筛*/
	int i, j, num;
	memset(isPrime, true, sizeof(isPrime));
	isPrime[0] = isPrime[1] = false;
	for( i = 0, num = 0 ;i < maxSize ;++i )
	{
		if(isPrime[i] == false)
			continue;
			
		prime[num++] = i;
		for( j = 2*i ;j < maxSize ;j+=i )
			isPrime[j] = false;
	}
	
	int d;//公差
	for( d= 1; d < 1000000 ;++d )//遍历公差为1~1000000的情况
	{
		for( i = 0; i<num-10 ; ++i )//遍历每个素数作为首项的情况
		{
			for( j = 0;j < 10 ;++j )//aj遍历a0、a1、a2......a9
			{	//aj是否为素数
				if(isPrime[ prime[i]+d*j ]==false)
					break;
			}
			if(j==10)//10个都是素数
			{
				printf("%d", d);
				return 0;
			}
				
		}
	} 
}

在这里插入图片描述

标签:false,int,maxSize,蓝桥,++,素数,isPrime
来源: https://blog.csdn.net/qq_51470638/article/details/122782863