等差素数列
类似: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 }