求出2~1000之间长度最长的、成等差数列的素数(质数)。
例如:在2~50之间的全部素数有
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47
其中公差为1的素数数列为2, 3,其长度为2
公差为2的素数数列为3, 5, 7,其长度为3
……
程序要求:输出满足条件的素数数列。
[算法提要]:首先用筛选法求出此范围内的全部素数,存放在数组B中,然后用2个变量i,j,逐步求出满足条件的素数数列。
程序:
Max := 0; num := 1000;
For i := 2 to num do
b[i] := i;
ENDFOR
For i := 2 to ______① for i:=2 to num-1 do 或for i:=2 to sqrt(num)do______ do
If ______if b[i] <>0_____ then
k := i + i;
While k <= num do
B[k] := 0;
K := k + i
ENDWHILE;
ENDIF;
ENDFOR;
For i := 2 to num - 1 do
If ________if b[i]<>0_________ then
J := 1;
D[j] := b[i];
For i1 := __________for i1:=i+1 to ____________ do
If b[i1] <> 0 then
Delta := ________num do _______;
k := delta;
While (i+k<=num)and ______delta:=i1-i; 或delta=b[i1]-b[i]______ do
j := j + 1;
d[j] := i + k;
k := k + delta
ENDWHILE;
If j > max then begin
Max := j;
C :=d //数组D的每个元素值
分别送放数组C的相应
元素中去//
ENDIF;
J := 1
ENDIF;
ENDFOR;
ENDIF;
ENDFOR;
writeln('The max length is: ', max);
write('The string is: ');
for i := 1 to max do write(c[i],' ');
writeln
ENDFOR;