pascal语言编程问题(free pascal
2个回答
展开全部
如下,能给满意回答吗,谢谢
program prime;
var
a : array [2..1000] of boolean;
i , p : integer;
begin
read(n);
for i:=2 to n do a[i]:=true; {a数组初始化,全部置true}
for i:=2 to n div 2 do
if a[i] then begin { a[i] 相当于 a[i]=true }
p:=i*2;
while p<=n do begin {将a中i的倍数去掉}
a[p]:=false;
p:=p+i;
end; {while}
end; {then}
for i:=2 to n do {打印素数}
if a[i]=true then write(i:4);
end.
program prime;
var
a : array [2..1000] of boolean;
i , p : integer;
begin
read(n);
for i:=2 to n do a[i]:=true; {a数组初始化,全部置true}
for i:=2 to n div 2 do
if a[i] then begin { a[i] 相当于 a[i]=true }
p:=i*2;
while p<=n do begin {将a中i的倍数去掉}
a[p]:=false;
p:=p+i;
end; {while}
end; {then}
for i:=2 to n do {打印素数}
if a[i]=true then write(i:4);
end.
更多追问追答
追问
首先谢谢你的回答,其次我想要的是素数的个数,望能回答。。
追答
sorry,那:program prime;
var
a : array [2..1000] of boolean;
i , p ,x: integer;
begin
read(n);
x:=0;
for i:=2 to n do a[i]:=true; {a数组初始化,全部置true}
for i:=2 to n div 2 do
if a[i] then begin { a[i] 相当于 a[i]=true }
p:=i*2;
while p<=n do begin {将a中i的倍数去掉}
a[p]:=false;
p:=p+i;
end; {while}
end; {then}
for i:=2 to n do {打印素数}
if a[i]=true then x:=x+1;;
end.
展开全部
可以用筛法,先搞一个2到10000的数组,然后把2到10000的两倍以上的数排出。剩下的就是素数。给个赞。如果还不行的话我打个程序。
更多追问追答
追问
我想要的就是程序,思路我知道,我想看看程序。
追答
额,就上面的吧,人家已经帮忙了,我就没必要了。
但还有一种,我贡献下:
program kkk;
var i,n,j:integer;
f:boolean;
begin
n:=0;{初始化}
for i:=2 to 10000 do
begin
f:=true;(初始化)
for j:=2 to trunc(sqrt(i)) do
if i mod j=0 then(除以以内的数,检查是否为素数)
begin
f:=false;
break;(终止循环)
end;
if f then
inc(n);(增加一个)
end;
writeln(n);(输出)
end.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询