Простое число называется гиперпростым, если любое число, получающееся из него откидыванием нескольких последних цифр, тоже является простым. например, число 733 -– гиперпростое, так как и оно само, и числа 73 и 7 -– простые. напишите программу, которая находит все гиперпростые числа в заданном диапазоне. используйте функции.

входные данные

входная строка содержит два натуральных числа – границы диапазона  a  и  b  . гарантируется, что  a  ≤  b  .

выходные данные

программа должна вывести все гиперпростые числа из заданного диапазона в одной строке, разделив их пробелами. если ни одного числа не найдено, программа должна вывести 0.

asemgul88 asemgul88    2   26.12.2019 05:57    56

Ответы
danil1365334 danil1365334  10.10.2020 23:21

PascalABC.NET

function IsPrime(n:integer): boolean;  // простое?

begin

 if n <= 1 then

 begin

   Result := False;

   exit

 end;

 Result := True;

 var (j, r) := (2, Round(Sqrt(n)));

 while Result and (j <= r) do

   if n mod j = 0 then

   begin

     Result := False;

     exit

   end

   else

     j += 1;

end;

function IsHyperPrime(n: integer): boolean; // гиперпростое?

begin

 Result := False;

 var k := 10;

 while n > 10 do

 begin

   n := n div 10;  

   if not IsPrime(n) then exit

 end;  

 Result := True

end;

begin

 var (a, b) := ReadInteger2;

 var found := False;

 foreach var n in Range(a, b) do

   if IsPrime(n) then // найдено простоe число

     if IsHyperPrime(n) then

     begin

       found := True;

       n.Print

     end;

 if not found then

   Write(0)

end.

ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика