Предмет: Информатика, автор: flappykiw1i

Напишите программу, которая выводит все простые числа с чётной суммой цифр в диапазоне от K до N ( 2 ≤ K ≤ N ≤ 100000 ).

Входные данные
Входная строка содержит два натуральных числа, разделённые пробелом, K и N ( 2 ≤ K ≤ N ≤ 100000 ).

Выходные данные
Программа должна вывести все простые числа с чётной суммой цифр в диапазоне от K до N в одну строку, разделив их пробелами. Если таких чисел нет, нужно вывести число 0.

На паскале.

Ответы

Автор ответа: pinguinbird
1

Ответ:

program HomeWork;

var k,n,j:integer;

function IsPrime(a:integer):boolean;

var i:integer;

begin

   IsPrime:=True;

   for i:=2 to a-1 do

   begin

       if a mod i = 0 then

       begin

           IsPrime:=False;

           break

       end

   end

end;

function IsSumEven(a:integer):boolean;

var i,s:integer;

begin

   IsSumEven:=False;

   s:=0;

   while a > 0 do

   begin

      i:=a mod 10;

      a:=a div 10;

      s:=s+i

   end;

   if s mod 2 = 0 then IsSumEven:=True

end;

begin

   write('Введите два натуральных числа, разделённые пробелом, K и N ( 2 ≤ K ≤ N ≤ 100000 ): '); readln(k,n);

   for j:=k to n do

   begin

       if IsPrime(j) = True then if IsSumEven(j) = True then write(j, ' ')

   end

end.


pinguinbird: Прошу прощения, забыл последнее условие имплеметировать, о том, что если таких простых чисел нет, то 0 выводить. Прикрутил костыль тут:
pinguinbird: Нужно добавить новую переменную в самом верху под Program HomeWork;var chk:boolean;
pinguinbird: и немного поменять тело основной программы на вот это:
begin
chk:=False;
write('Введите два натуральных числа, разделённые пробелом, K и N ( 2 ≤ K ≤ N ≤ 100000 ): '); readln(k,n);
for j:=k to n do
begin
if IsPrime(j) = True then if IsSumEven(j) = True then
begin
write(j, ' ');
chk:=True
end
end;
if chk = False then write(0)
end.
Похожие вопросы