表示没看过这样的程序。 我的程序: var n,i:longint; function check(x:longint):boolean; var i:longint; begin for i:=2 to trunc(sqrt(x)) do if x mod i=0 then exit(false); exit(true); end; begin readln(n); write(2); for i:=3 to n do if check(i) then write(' ',i); writeln; end.
n不大的话可以用筛法来做。 const MAXLEN=1048576; var PrimeTable:array [0..MAXLEN] of Boolean; procedure BuildPrimeTable(m:LongWord); var i, j:LongWord; begin PrimeTable[0]:=false; PrimeTable[1]:=false; FillChar(PrimeTable[2], n-1, 1); for i:=2 to m do if PrimeTable[i] do begin write(i, ' '); j:=i; while i*j<=m do begin PrimeTable[i*j]:=false; inc(j); end; end; end;