蓝桥杯省赛-等差素数列

题目描述

2,3,5,7,11,13,....是素数序列。
类似:7,37,67,97,127,157 这样全由素数组成的等差数列,叫等差素数数列。
上边的数列公差为30,长度为6。
2004年,格林与华人陶哲轩合作证明了:存在任意长度的素数等差数列。
这是数论领域一项惊人的成果!
有这一理论为基础,请你借助手中的计算机,满怀信心地搜索:
长度为10的等差素数列,其公差最小值是多少?

输出

输出一个整数表示答案
#include<iostream>
#include<cmath>
using namespace std;
int prime[100000];
bool isprime(int n)
{
    if(n==0||n==1)
        return false ;
    if(n==2)
        return true;
    for(int i=2;i<sqrt(n);i++)
    {
        if(n%i==0)
            return false;
    }
    return true;
}
int main()
{
    int index=0;
    for(int i=2;i<=100000;i++)
    {
        if(isprime(i))
        {
            prime[index]=i;
            index++;
        }
    }
    for(int i=0;i<=index;i++)
    {
        for(int d=3;d<=500;d++)
        {
            int j;
            for(j=0;j<10;j++)
            {
                if(!isprime(prime[i]+j*d))
                    break;
            }
            if(j==10)
            {
                cout<<d<<endl;
                return 0;
            }
         } 
    }
    return 0;
 } 

 

posted @ 2021-04-13 22:54  只配吃三碗饭  阅读(182)  评论(0)    收藏  举报