# GÓC SÁNG TẠO > Khu vực lập trình > Pascal/Delphi/Kylix >  Số siêu nguyên tố!

## thanh_k8_cntt

Số siêu nguyên tố được định nghĩa là số nguyên tố mà khi bỏ dần các chữ số từ phải sang trái thì ta vẫn được các số nguyên tố.


```
Ví dụ:
5939 ->số nguyên tố
593  ->số nguyên tố
59   ->số nguyên tố
5    ->số nguyên tố
```



```
Var tam,n,i,GTD,GTC:LongInt;
Function KT(i:LongInt):Boolean;
Var j:Integer;
Begin
    KT:=False;
    For j:=2 to i div 2 do
        If i mod j=0 then exit;
    KT:=True;
End;
Function SNT(i:LongInt):Boolean;
Begin
    SNT:=False;
    Repeat
        If KT(i)=False then Exit;
        i:=i div 10;
    Until i=0;
    SNT:=True;
End;
Begin
    Repeat
        Write('Nhap n='); Readln(n);
    Until (n>0) and (n<=9);
    GTD:=1; GTC:=1;
    For i:=1 to n-1 do GTD:=GTD*10;
    For i:=1 to n do GTC:=GTC*10;
    dec(GTC);
    For i:=GTD to GTC do
        If SNT(i) then Writeln(i);
    Readln;
End.
```

Mình cho chạy máy test thử n=3 thì nó hiện ra từ 100->999 luôn!

----------


## poodle

*SpeedHunter* ơi ! đề bài là gì vậy ? in ra các số siêu nguyên tố có n chữ số ak ?

----------


## gamevui5k

Bạn ý vừa làm được bài này nên đăng lên cho các bạn tham khảo cách làm ấy mà.
Đề bài: In ra các số siêu nguyên tố có n chữ số.

----------


## thaonguyenxanh_9x

Hình như bị sai thì phải *SpeedHunter* ạ ! mình có sửa lại 1 chút thì toàn in ra số nguyên tố thôi !

----------


## hoanghuy200515

In ra số nguyên tố thì đúng mà. Số siêu nguyên tố ban đầu phải là số nguyên tố đã rồi mới xét tiếp.

----------


## blogsieutoc

em nghĩ nên xét luôn trong 1 ct rồi đưa hết vào mảng hằng cho tiện .

----------


## tungvu

Bài này....nên giới hạn cụ thể đề bài...
Nhớ không lầm là đã thi tỉnh Hậu Giang năm 2007-2008 gì đó thì phải...và người giải nhất năm đó hiện đang là sv khoa CNTT trường ĐH KHTN TPHCM - năm nay là năm 2 nè...chắc là bài này cũng copy thôi...
Nhớ năm đó mình chấm bài này test n=9 chạy k quá 1s đó...
Hiện bài giải không còn nhưng QUY HOẠCH ĐỘNG được bài này là OK đó...
Xin lỗi chưa test bài giải của bạn! Còn đề bài đúng rồi - thêm giới hạn n và thời gian nhé!

----------


## alodienlanh

KT:=True;{--> KT:=False;}
For j:=2 to i div 2 do
If i mod j=0 then exit;
KT:=True;

----------


## mapsieunhan93

bài siêu nguyên tố of *SpeedHunter* Sai joy`

----------


## dannyseo77

*


```
label 1; 
const max=500; 
      a:array[1..4]of longint=(1,3,7,9); 
var n,m,i,j,x:longint; 
    p:array[1..3432] of longint; 

function Prime(i:longint):boolean; 
var j : longint; 
begin 
       Prime:=false; 
       for j:=1 to m do 
       begin 
              if i mod p[j]=0 then exit; 
              if p[j]>trunc(sqrt(i)) then 
              begin 
                     Prime:=true; 
                     exit; 
              end; 
       end; 
end; 

procedure Try(i,x:longint); 
var j:longint; 
begin 
       if i>n then 
       begin 
              write(x,' '); 
              exit; 
       end; 
       x:=x*10; 
       for j:=1 to 4 do 
       if Prime(x+a[j]) then Try(i+1,x+a[j]); 
end; 

begin 
        p[1]:=2;m:=1; 
        for i:=3 to 32000 do 
        begin 
               for j:=1 to m do 
               begin 
                      if i mod p[j]=0 then goto 1; 
                      if p[j]>trunc(sqrt(i)) then 
                      begin 
                             inc(m); 
                             p[m]:=i; 
                             goto 1; 
                      end; 
               end; 
               1: 
       end; 
       readln(n); 
       for i:=1 to 4 do 
       begin 
              x:=p[i]; 
              Try(2,x); 
       end; 
end.
```

*

----------


## bigsale001

bài siêu nguyên tố of HappySoftGroup Sai joy`

----------


## sealdangerous

```
Program SNT;
{SuperPrime}
var a,b: array [1..100] of longint;
      N,i,k,ka,kb,cs: byte;
Function Prime(N: longint): boolean;
Var i: longint;
Begin
   If (N=0) or (N=1) then Prime:=false 
   Else
   Begin
      i:=2;
      While (N mod i <> 0) and (i <= Sqrt(N)) do Inc(i);
      If i > Sqrt(N) then Prime:=true   
      Else Prime:=false;
   End;
End;

BEGIN
    Write ('Nhap N: ');
    Readln (N);
    ka:=1;  a[ka]:=0;
    For i:=1 to N do
    Begin
         Kb:=0;
         For k:=1 to ka do
            For cs:=0 to 9 do
               If Prime(a[k]*10+cs) then
               Begin
                   Inc(kb);
                   b[kb]:=a[k]*10+cs;
               end;
            ka:=kb;
            For k:=1 to ka do
            a[k]:=b[k]; 
    end;
    For k:=1 to ka do
    Write(a[k]:10);
    Writeln;
    Writeln('Co tat ca',ka,'so sieu nguyen to co',N,'chu so.');
    Readln;
END.

```




> bài siêu nguyên tố of HappySoftGroup Sai joy`


HSG nghĩ em sai! HSG đã test lại rồi! [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG] Lần sau test trước đã nha em! Chúc em vui vẻ!

----------


## petduy

end; 
end; 
1: 
end; 
readln(n); 
for i:=1 to 4 do

----------


## cansaoviet

[IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG] Có sai đâu em! [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG] Em chạy thử xem. Cái này là dùng LABEL mà. Chắc em không nghĩ dùng nó đúng không! [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]

----------


## alias_va

srr ban
mi ngay nay minh share nick
thuc ra ban ay chi gop y la chay cho 4 so 1, 3, 7, 9 thoi vi mi so kia chac chan cha tao duoc thanh so nguyen to dau =))
lap cai mang hang gom 4 pt cung duoc

----------


## gamevui5k

> srr ban
> mi ngay nay minh share nick
> thuc ra ban ay chi gop y la chay cho 4 so 1, 3, 7, 9 thoi vi mi so kia chac chan cha tao duoc thanh so nguyen to dau =))
> lap cai mang hang gom 4 pt cung duoc


Uhm, không sao! Điều này HSG biết.

----------


## hatrang1995

Góp ý chút nhé:
- Test nguyên tố nên dùng công thức "nhảy 6"
- Đưa lại đề bài cụ thể: số siêu nguyên tố có n chữ số và giới hạn n (0<n<10 chẳng hạn)
- Thới gian test là bao nhiêu (bài này vô cùng quan trọng) - cho 30s - 60s đi
Mời tiếp tục...

----------


## vytieubao

Bài này không giới hạn thời gian test. Làm sao để chạy đúng là được.

----------


## thangttmobile

Mình có đọc qua đề bài toán này đâu đó. Đúng rồi, bài toán này có trong "100 tin học và nhà trường" í. Không biết nhớ đúng ko nữa. Bài này xin cho giới hạn của n và thời gian chạy xem sao!

----------


## nam123

Đã test bài của HSG...
Nhận xét: OK

----------

