Простое число называется гиперпростым, если любое число, получающееся из него откидыванием нескольких последних цифр, тоже является простым. например, число 733 -– гиперпростое, так как и оно само, и числа 73 и 7 -– простые. напишите программу, которая находит все гиперпростые числа в заданном диапазоне. используйте функции.
входные данные
входная строка содержит два натуральных числа – границы диапазона a и b . гарантируется, что a ≤ b .
выходные данные
программа должна вывести все гиперпростые числа из заданного диапазона в одной строке, разделив их пробелами. если ни одного числа не найдено, программа должна вывести 0.
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.