Bài 2. Làm quen với chương trình và ngôn ngữ lập trình

Nguyễn Văn Tiến Dũng

Tại Vương quốc Byte xinh đẹp, mỗi người luôn chọn cho mình một con số, theo họ số nguyên tố là số mang lại sự may mắn và ai tìm được một số siêu nguyên tố còn may mắn hơn nữa. Số siêu nguyên tố là một số nguyên tố mà khi bỏ 1 số tùy ý các chữ số bên phải của nó thì phần còn lại vẫn là 1 số nguyên tố. Số 2333 là 1 số siêu nguyên tố vì 2333 là một số nguyên tố và 233, 23, 2 cũng là các số nguyên tố.

Dữ liệu vào: SNT.INP Chứa một số nguyên dương n (n ≤ 109)

Dữ liệu ra: SNT.OUT  Nếu N là siêu nguyên tố ghi giá trị 1, ngược lại ghi giá trị 0

Phía sau một cô gái
13 tháng 8 2023 lúc 8:49

program KiemTraSoSieuNguyenTo;

uses crt;

function IsPrime(num: integer): boolean;

var

   i: integer;

begin

   if num < 2 then

      IsPrime := false

   else

   begin

      IsPrime := true;

      for i := 2 to trunc(sqrt(num)) do

      begin

         if num mod i = 0 then

         begin

            IsPrime := false;

            break;

         end;

      end;

   end;

end;

function IsSuperPrime(num: integer): boolean;

var

   i, temp: integer;

begin

   IsSuperPrime := true;

   while num > 0 do

   begin

      if not IsPrime(num) then

      begin

         IsSuperPrime := false;

         break;

      end;

      temp := num mod 10;

      num := num div 10;

   end;

end;

var

   n: integer;

   inputFile, outputFile: text;

begin

   assign(inputFile, 'SNT.INP');

   assign(outputFile, 'SNT.OUT');

   reset(inputFile);

   rewrite(outputFile);

   readln(inputFile, n);

   if IsSuperPrime(n) then

      writeln(outputFile, 1)

   else

      writeln(outputFile, 0);

   close(inputFile);

   close(outputFile);

end.

Bình luận (1)
Nguyễn Hoàng Duy
14 tháng 8 2023 lúc 6:42

const fi='SNT.INP'
   fo='SNT.OUT'
var n:qword;
function isPrimeNumber(n:qword):byte;
var i:longint;
begin
   if n<2 then exit(0);
   for i:=2 to trunc(sqrt(n))do
      if n mod i=0 then exit(0);
   exit(1);
end;
function isSuperPrimeNumber(n:qword):byte;
begin
   while n<>0 do
      begin
         if isPrimeNumber(n)=0 then exit(0);
         n:=n div 10;
      end;
   exit(1);
end;
begin
   assign(input,fi);reset(input);
   assign(output,fo);rewrite(output);
      readln(n);
      write(isSuperPrimeNumber(n));
   close(output);
   close(input);
end.

 

Bình luận (0)

Các câu hỏi tương tự
Đăng Quang
Xem chi tiết
Mon_LAK
Xem chi tiết
Nguyễn băng băng
Xem chi tiết
Anh Kim
Xem chi tiết
Trần Thị Xuân Mai
Xem chi tiết
Phương Thảo
Xem chi tiết
Mỹ Uyên
Xem chi tiết
Diệp Tiên
Xem chi tiết