Lâu lắm rồi mới cm lại ở ddth , bài này trước mình làm trâu bò như cách ở page 1, giờ khôn hơn rồi, post lại bài mới, cách này nhanh hơn dùng đệ quy , thời gian khoảng 1s thôi
Code:
Uses crt;
Var
n,dem:byte;
k,i:longint;
{-------------------------------------------}
Function NT(n:longint):boolean;
Var
i:longint;
Begin
NT:=False;
If n<2 then Exit;
For i:=2 to round(sqrt(n)) do
If n mod i=0 then Exit;
NT:=True;
End;
{-------------------------------------------}
Procedure Find(x:longint);
Var
i:longint;
Begin
If NT(x) then
If x>k then
Begin
Write(x:10);
dem:=dem+1;
End
Else
For i:=1 to 9 do
If (i<>5) and (i mod 2<>0) then Find(10*x+i);
End;
{-------------------------------------------}
BEGIN
Clrscr;
Write('Nhap so n:');
Readln(n);
k:=1;
For i:=1 to (n-1) do
k:=10*k;
Find(1); Find(2); Find(3); Find(5); Find(7);
Writeln;
Writeln('Co ',dem,' so sieu nguyen to co ',n,' chu so.');
Readln;
END.
Bookmarks