1. 程式人生 > >2017第八屆藍橋杯C/C++ B組省賽-等差素數列

2017第八屆藍橋杯C/C++ B組省賽-等差素數列

.... spa 素數表 等差數列 打出 span 註意 i++ shai

標題:等差素數列

2,3,5,7,11,13,....是素數序列。
類似:7,37,67,97,127,157 這樣完全由素數組成的等差數列,叫等差素數數列。
上邊的數列公差為30,長度為6。

2004年,格林與華人陶哲軒合作證明了:存在任意長度的素數等差數列。
這是數論領域一項驚人的成果!

有這一理論為基礎,請你借助手中的計算機,滿懷信心地搜索:

長度為10的等差素數列,其公差最小值是多少?

註意:需要提交的是一個整數,不要填寫任何多余的內容和說明文字。


比賽的時候有點混亂,結果連暴力都沒暴力出來,後來比賽一結束,就看了一遍就想到了怎麽寫,,心態決定命運啊_(°:з」∠)_


純暴力打出素數表,然後挨個遍歷知道找到合適的就好

 1 #include<stdio.h>
 2 int su[20000]={0};
 3 int shai[20000]={1,1,0};
 4 void p()
 5 {
 6     int k=0;
 7     for(int i=0;i<10000;i++)
 8     {
 9         if(shai[i])
10         {
11             continue;
12         }
13         for(int j=i;j*i<10000;j++)
14         {
15 shai[i*j]=1; 16 } 17 su[k++]=i; 18 } 19 } 20 int suu() 21 { 22 int i,j,k; 23 for(i=0;i<10000;i++) 24 { 25 int kk=su[i]; 26 for(k=1;k<1000;k++) 27 { 28 29 for(j=1;j<10;j++) 30 { 31 if
(shai[kk+j*k]) 32 { 33 break; 34 } 35 } 36 if(j>=10) 37 { 38 return k; 39 } 40 } 41 } 42 } 43 int main() 44 { 45 p(); 46 int a=suu(); 47 printf("%d\n",a); 48 return 0; 49 }

 

2017第八屆藍橋杯C/C++ B組省賽-等差素數列