Số siêu nguyên tố
Số siêu nguyên tố là số nguyên tố mà khi bỏ một số tuỳ ý các chữ số bên phải của nó thì phần còn lại vẫn tạo thành một số nguyên tố.
Ví dụ 7331 là một số siêu nguyên tố có 4 chữ số vì 733, 73, 7 cũng là các số nguyên tố.
Nhiệm vụ của bạn là viết chương trình nhập dữ liệu vào là một số nguyên N (0< N <10) và đưa ra kết quả là một số siêu nguyên tố có N chữ số cùng số lượng của chúng.
Program HOC24;
var n: byte;
dem: integer;
i,x,x1: longint;
function nt(b: longint): boolean;
var j: longint;
begin
nt:=true;
if (b=2) or (b=3) then exit;
nt:=false;
if (b=1) or (b mod 2=0) or (b mod 3=0) then exit;
j:=5;
while j<=trunc(sqrt(b)) do
begin
if (b mod j=0) or (b mod (j+2)=0) then exit;
j:=j+6;
end;
nt:=true;
end;
function snt(a: longint): boolean;
var d,d1: byte;
begin
d:=0; d1:=0;
while a<>0 do
begin
if nt(a) then d:=d+1;
d1:=d1+1;
a:=a div 10;
end;
if d1=d then snt:=true else snt:=false;
end;
begin
write('Nhap so N: '); readln(n);
case n of
1: begin x:=1; x1:=9; end;
2: begin x:=10; x1:=99; end;
3: begin x:=100; x1:=999; end;
4: begin x:=1000; x1:=9999; end;
5: begin x:=10000; x1:=99999; end;
6: begin x:=100000; x1:=999999; end;
7: begin x:=1000000; x1:=9999999; end;
8: begin x:=10000000; x1:=99999999; end;
9: begin x:=100000000; x1:=999999999; end;
end;
dem:=0;
for i:=x to x1 do
if nt(i) then
if snt(i) then
begin
write(i,' ');
inc(dem);
end;
writeln;
write('Tat ca co ',dem,' so');
readln
end.
uses crt;
var n,i,kt,dem:integer;
x,y,m,b:int32;
st,st1,st2,st3:shortstring;
{-------------chuong-trinh-con-kiem-tra-so-nguyen-to-----------------------}
function ktnt(var x:longint):integer;
var kt,i,kt1,j:integer;
begin
kt:=0;
for i:=2 to trunc(sqrt(x)) do
if x mod i=0 then begin
kt:=1;
break;
end;
if kt=0 then ktnt:=1
else ktnt:=0;
end;
{-------------------------------------------}
begin
clrscr;
write('Nhap n='); readln(n);
st1[1]:='1';
for i:=2 to n do
st1[i]:='0';
st:='';
for i:=1 to n do
st:=st+st1[i];
val(st,x);
for i:=1 to n do
st2[i]:='9';
st3:='';
for i:=1 to n do
st3:=st3+st2[i];
val(st3,y);
dem:=0;
for m:=x to y do
{-----------------------------------------------}
begin
begin
b:=m;
repeat
kt:=ktnt(b);
if kt=0 then break
else b:=b div 10;
until b<10;
if (ktnt(b)=1) and (b>1) then
begin
write(m,' ');
inc(dem);
end;
end;
end;
writeln;
writeln('Co ',dem,' so sieu nguyen to co ',n,' chu so');
{-------------------------------------------------}
readln;
end.