蓝桥杯素数等差数列问题。下面是题目。
2,3,5,7,11,13,是素数序列。
类似:7,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列。
上边的数列公差为30,长度为6。
2004年,格林与华人陶哲轩合作证明了:存在任意长度的素数等差数列。
这是数论领域一项惊人的成果!
有这一理论为基础,请你借助手中的计算机,满怀信心地搜索:
长度为10的等差素数列,其公差最小值是多少?
个人的解题思路是创造一个数组a[10],然后令a[0]是素数,按照公差d得出数组其他数字,依次检查是否每个都是素数。直到每个都是素数,输出公差d。
还请求各位指正;
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int f(int x);
int i,j;
int a[10],d,final;
for(i=3; i<1000; i++)
{
if(f(i))
{
a[0]=i;
for(d=1000; d>1; d--)
{
for(j=1; j<10; j++)
{
a[j]=a[0]+j*d;
if(f(a[j]))
{
final=d;
}
else
{
break;
}
}
}
}
}
printf("%d",final);
return 0;
}
int f(int x)
{
int judge;
int k;
for(k=2; k<x; k++)
{
int judge=0;
if(x%k==0)
{
judge =0;
return 0;
break;
}
else
{
judge++;
}
}
if(judge)
return x;
}