长度为11的等差素数数列,最小公差值为多少?然后这个等差素数数列为哪几个数?
你这个题目没想的那么简单,数据范围没有限定边界,很难快速找到符合要求的。
题目要求数列中全是素数,数列是等差数列,而且公差最小,只能从公差1开始遍历,麻烦的是没有限定数据上限,没有结束条件。
#include<stdio.h>
#include<math.h>
bool isPrimeNumber(int t);
int main() {
int n,i,j,t;
bool flag = true;
for ( i = 2; i < 1000; i++) { // i:起始的素数
for ( j = 2; j < 1000; j++) { // j:等差数列公差
flag = true;
for (int k = 0; k < 10; k++) { // k:第k个素数
if (!isPrimeNumber(i + j * k)) { // 判断等差数列中的数字是否为素数
flag = false;
break;
}
}
if (flag) { printf("%d\n",j);n=i; t=j;break; } // 输出结果
}
}
for(i=0;i<10;i++){
printf("%d ",n+i*t);
}
return 0;
}
/*
** 判断一个数是否为素数,是则返回true,否则返回false
*/
bool isPrimeNumber(int t) {
for (int i = 2; i <= sqrt(t); i++) {
if (t % i == 0)
return false;
}
return true;
}