用Pascal求出1到100之间的所有质数,回答的好把所有的分全给你.

2026年09月22日 04:11
有4个网友回答
网友(1):

program zhishu;
var
i,j:integer;
p:boolean;
begin
for i:=2 to 100 do
begin
p:=true;
for j:=2 to trunc(sqrt(i)) do
if i mod j=0
then
begin
p:=false;
break;
end;

if p then write(i,' ');
end;
readln;
end.

以上方法中运用的数学知识有:
如果一个数 不被小于它的平方根的任何一个数(不包括一)整除,那么它是素数(证明从略)
trunc() 是去尾函数
如 trunc(1.6)=1;

网友(2):

可以利用筛法求质数,程序为:
Program zhishu;
Const
m = 2;
n = 100;
Var
a:Array[m..n] Of Integer;
b: Array[1..200] Of Integer;
k, i, j: Integer;
Begin
For i:=m To n Do
a[i] := 1;
k := 1;
For i:=m TO n Do Begin
If a[i] = 1 Then Begin
j := i + i;
b[k] := i;
k := k + 1;
While j <= n Do Begin
a[j] := 0;
j := j + i;
End;
End;
End;
For i:=1 TO n Do
IF b[i] <> 0 Then Write(b[i], ' ');
Readln;
End.

网友(3):

筛法,是求不超过自然数N(N>1)的所有质数的一种方法。据说是古希腊的埃拉托斯特尼(Eratosthenes,约公元前274~194年)发明的,又称埃拉托斯特尼筛子。

具体做法是:先把N个自然数按次序排列起来。1不是质数,也不是合数,要划去。第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去。3后面第一个没划去的数是5,把5留下,再把5后面所有能被5整除的数都划去。这样一直做下去,就会把不超过N的全部合数都筛掉,留下的就是不超过N的全部质数。因为希腊人是把数写在涂腊的板上,每要划去一个数,就在上面记以小点,寻求质数的工作完毕后,这许多小点就像一个筛子,所以就把埃拉托斯特尼的方法叫做“埃拉托斯特尼筛”,简称“筛法”。(另一种解释是当时的数写在纸草上,每要划去一个数,就把这个数挖去,寻求质数的工作完毕后,这许多小洞就像一个筛子。)

例如,用筛法找出不超过30的一切质数:

不超过30的质数2,3,5,7,11,13,17,19,23,29共10个。

程序:
const n=100;
var a:array[2..n] of boolean;
i,j:longint;
begin
fillchar(a,sizeof(a),true);
for i:=2 to n do
if a[i] then
begin
for j:=2 to n div i do
a[j*i]:=false;
end;
for i:=2 to n do if a[i] then writeln(i);
end.

网友(4):

var q:integer;
function o(t:integer):boolean;
var h:integer;
begin
for h:=2 to trunc(sqrt(t)) do if t mod h=0 then begin o:=false; exit; end;
o:=true;
end;
begin
for q:=2 to 100 do if o(q) then write(q:5);
writeln;
readln;
end.