回覆列表
-
1 # 重型手扶拖拉機
-
2 # 籮倫詩視界
給出FREE BASIC的解法:
SCREEN 12
CLS
DIM i,j AS INTEGER
i=0
j=0
for i=2 to 100
for j=2 to 99
if i mod j = 0 then
exit for
else
print i;
next j
next i
end
給出FREE BASIC的解法:
SCREEN 12
CLS
DIM i,j AS INTEGER
i=0
j=0
for i=2 to 100
for j=2 to 99
if i mod j = 0 then
exit for
else
print i;
next j
next i
end
100以內的求解最簡單的就是挨個判斷,先輸出2,然後從3開始,每個數n都從2開始迴圈判斷能不能整除,到n-1,如果在這之中找到一個能整除的數,那麼n就不是質數,迴圈結束,判斷下一個,如果發現沒有任何數能整除n,那麼n就是質數,輸出。直到n到100,所有的質數就都輸出來了。想簡化也可以把迴圈判斷整除那裡的結束條件換成n的平方根,速度將提高,但增加了程式的複雜性,只是100以內的話有點得不償失。也可以用篩法,程式設計略複雜些,但速度更快。現編了個篩法的程式,我很多年沒有正經寫個程式了,手頭也沒有編譯器沒辦法查錯,有懂的幫看看有沒有問題。
var
p:array[1..100] of integer;
m,n,i:integer;
begin
for i:=1 to 100 do
p[i]:=i;
p[1]:=0;
n:=2;
while (n<100) or (p[n]<>0) do
begin
m:=n+n;
while m<=100 do
begin
p[m]:=0;
inc(m,n);
end;
inc(n);
end;
for i:=2 to 100 do
if p[i]<>0 then
write(i:4);
writeln;
end.