Напишите программу, которая выводит все простые числа с чётной суммой цифр в диапазоне от k до n ( 2 ≤ k ≤ n ≤ 100000 ). входные данные входная строка содержит два натуральных числа, разделённые пробелом, k и n ( 2 ≤ k ≤ n ≤ 100000 ). выходные данные программа должна вывести все простые числа с чётной суммой цифр в диапазоне от k до n в одну строку, разделив их пробелами. если таких чисел нет, нужно вывести число 0. примеры входные данные 100 150 выходные данные 101 103 107 109 127 149 входные данные 40 50 выходные данные 0 pascalabc 1.8
function pr(a:longint ):boolean;
var d:longint;
begin
if a<2 then pr:=false
else
begin
pr:=true;
for d:=2 to round(sqrt(a)) do
if a mod d=0 then pr:=false;
end;
end;
function isch(var x: longint ): boolean;
var s: longint;
begin
s:=0;
isch:=false;
while ( x<>0 ) do
begin
s := s + (x mod 10);
x:= x div 10;
end;
if s mod 2=0 then isch:=true;
end;
var k,n,i,c: longint;
y: boolean;
begin
readln(k,n);
if (k>=2) and (n<=100000) then
begin
y:=true;
for i:=k to n do
begin
c:=i;
if (pr(c)) and (isch(c)) then
begin
write(i,' ');
y:=false;
end;
end;
if y then write('0');
end;
end.
n,k,i,j,r,s:longint;
notfound,flag:boolean;
begin
Read(k,n); { начальное и конечное значение интервала }
notfound:=True;
for i:=k to n do begin
flag:=True; j:=2;
r:=round(sqrt(i));
while flag and (j<=r) do
if i mod j = 0 then flag:=false
else Inc(j);
if flag then begin { нашли простое число i }
s:=0; r:=i;
repeat
s:=s+r mod 10;
r:=r div 10
until r=0;
if s mod 2=0 then begin Write(i,' '); notfound:=False end;
end
end;
if notfound then Writeln(0)
end.
Примеры
100 150
101 103 107 109 127 149
40 50
0
2 1000
2 11 13 17 19 31 37 53 59 71 73 79 97 101 103 107 109 127 149 163 167 181 211 233 239 251 257 271 277 293 307 347 349 367 383 389 419 431 433 439 457 479 491 499 503 509 521 523 541 547 563 569 587 613 617 619 631 653 659 673 677 691 701 709 727 743 761 769 787 811 839 853 857 859 877 907 929 941 947 967 983