Ai giúp mình với, máy mình dạo này lạ lắm
Mình khai báo: P:Array[1..max]of Boolean;
Nếu max>=10^5 thì máy báo lỗi: Ordinal type expected
Chả biết đó là lỗi gì, nhưng mình nghĩ đó không phải là lỗi tràn số
[=========> Bổ sung bài viết <=========]
Mình thử làm theo cách dùng sàng gì đó nhé:
Code:
Program so_snt;
Uses crt;
Const max = 10000;
Var P: Array[1..max] of Boolean; {P[i]=false n?u i không th? là s? siêu nguyên t?}
i,j: Longint;
Function ktnt(n:Longint): Boolean;
Var i: Longint;
Begin
ktnt:=False;
For i:=2 to trunc(sqrt(n)) do
If n mod i = 0 then exit;
ktnt:=true;
End;
Function ktsnt(n:Longint): Boolean;
Begin
ktsnt:=False;
While n>0 do
If ktnt(n) then n:=n div 10
Else exit;
ktsnt:=True;
End;
BEGIN
Clrscr;
Writeln('Cac so sieu nguyen to < 10^4: ');
Fillchar(P,sizeof(P),True);
For i:=2 to max do
If P[i] and ktsnt(i) then
Begin
Write(i:8);
j:=i;
While j<=max do
Begin
P[j]:=False; {Ðánh d?u các u?c c?a i không th? là ssnt}
inc(j,i);
End;
End;
Readln
END.
Bookmarks