早教吧 育儿知识 作业答案 考试题库 百科 知识分享

pascal编程在素数的大家庭中,大小之差不超过2的两个素数被称为孪生素数,如2和3,3和5,17和19等。请你统计一下,在不大于自然数N(N

题目详情
pascal编程
在素数的大家庭中,大小之差不超过2的两个素数被称为孪生素数,如2和3,3和5,17和19等。请你统计一下,在不大于自然数N(N<=10的六次方)的素数中,孪生素数的对数。
▼优质解答
答案和解析
选我的
const maxn=1000000;
var a:array[1..maxn] of boolean;
n:longint;
procedure init;
var i,j:longint;
begin
a[1]:=false;
for i:=2 to maxn do a[i]:=true;
for i:=2 to maxn do if a[i] then begin
j:=i*2;
while j<=maxn do begin
a[j]:=false;
j:=j+i;
end;
end;
end;
function ans(n:longint):longint;
var i:longint;
begin
ans:=0;
for i:=1 to n do if a[i] then begin
if (i+1<=n)and(a[i+1]=true) then ans:=ans+1;
if (i+2<=n)and(a[i+2]=true) then ans:=ans+1;
end;
end;
begin
init;
readln(n);
writeln(ans(n));
end.
maxn可以改成需要的数值,init是初始化的过程,ans是统计对数的函数
如果有多个询问的话,那么还可以用空间换时间,再新开一个统计对数总数的数组
还有什么为问题都可以来找我,只要在我能力范围内的我都会解答的
看了pascal编程在素数的大家庭...的网友还看了以下: