程帅霞

不断受挫,不停起身,不断追寻,不止AC~~

导航

B 等差素数列

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

 1 #include <stdio.h>
 2 int a[100000]={0};
 3 int check(int x) {
 4     if(x < 2) return 0;
 5     for(int i = 2; i < x; i++) {
 6         if(x%i == 0) {
 7             return 0;
 8         }
 9     }
10     return 1;
11 }
12 int main() {
13     for(int i = 2; i < 100000; i++) {
14         if( check(i) ) {
15             a[i] = 1;   //说明i为素数  赋1
16         }
17     }
18     for(int cha = 1; cha < 10000; cha++) { //公差
19         for(int i = 2; i < 100000; i++ ) {  //起始位置
20             int count;
21             for(count= 0 ; count < 10; count++) {
22                 if(a[ i+count*cha ] != 1)
23                  {  //说明这个数不是素数
24                     break;
25                 }
26             }
27             if(count == 10) {
28                 printf("%d",cha);
29                 return 0;
30             }
31         }
32     }
33     return 0;
34 } 

 

posted on 2020-10-14 14:19  程帅霞  阅读(135)  评论(0编辑  收藏  举报