等差素数列

等差素数列

类似:7,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列,上边的数列公差为30,长度为6。

2004年,格林与华人陶哲轩合作证明了:存在任意长度的素数等差数列。这是数论领域一项惊人的成果!

有这一理论为基础,请你借助手中的计算机,满怀信心地搜索:长度为10的等差素数列,其公差最小值是多少?

注意:需要提交的是一个整数,不要填写任何多余的内容和说明文字。

 

解题思路:暴力破解,设起始素数为2,结尾素数为1000,起始公差为2,结尾公差为1000,循环判断十个数字是否为素数。

 

 1 #include<iostream>
 2 #include<cmath>
 3 using namespace std;
 4 
 5 bool isPrimeNumber(int t);
 6 
 7 int main() {
 8 
 9     bool flag = true;
10     for (int i = 2; i < 1000; i++) {        // i:起始的素数
11         for (int j = 2; j < 1000; j++) {    // j:等差数列公差
12             flag = true;
13             for (int k = 0; k < 10; k++) {    // k:第k个素数
14                 if (!isPrimeNumber(i + j * k)) { // 判断等差数列中的数字是否为素数
15                     flag = false;
16                     break;
17                 }
18             }
19             if (flag) { cout << j; break; }  // 输出结果
20         }
21     }
22 
23     return 0;
24 }
25 
26 /*
27 ** 判断一个数是否为素数,是则返回true,否则返回false
28 */
29 bool isPrimeNumber(int t) {
30     for (int i = 2; i <= sqrt(t); i++) {
31         if (t % i == 0)
32             return false;
33     }
34     return true;
35 }

 

posted @ 2019-03-20 17:32  梦醒时夜续  阅读(642)  评论(0编辑  收藏  举报