7. В линейном массиве найдите и выведите все простые числа с нечетной суммой цифр. Укажите, сколько чисел вывели.

Запросим ввод с клавиатуры чисел. Следующим шагом мы будем проверять в цикле каждое число на простоту. Для проверки на простоту воспользуемся способом, о котором мы узнали в §4. Если число простое, посчитаем сумму цифр, из которых оно состоит.

Чтобы вычислить сумму цифр числа, нам нужно инициализировать переменную sum := 0, которая будет содержать сумму цифр текущего числа, скопировать текущее число во временную переменную m и реализовать цикл, при каждой итерации которого мы получаем остаток от деления текущего числа на 10 (последняя цифра числа), суммируем его с sum, переменную m целочисленно делим на 10 (это нужно для следующей итерации цикла). В следующей итерации цикла переменная m уже будет без одного десятка и мы сможем снова взять последнюю цифру числа и просуммировать её с переменной sum. Цикл завершает свою работу, как только переменная m станет равна нулю.

var p: array[1..10] of integer;
const s_n: array of integer =
(2, 3, 5, 7, 11, 13, 17, 19, 23, 29,
1, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97);
var k, m, o, sum, n: integer;
prost: boolean;
begin
 
 n := 0;
 writeln('Введите числа');
 for var i := 1 to 10 do
  read(p[i]);
 
 for var i := 1 to 10 do
 begin
  k := 0;
  while (s_n[k] * s_n[k] <= p[i])
    and (p[i] mod s_n[k] <> 0) do
    k := k + 1;
  if s_n[k]*s_n[k] > p[i] then
  begin
    writeln(p[i], ' - простое');
    m := p[i];
    sum := 0;
    while m > 0 do
    begin
      o := m mod 10;
      m := m div 10;
      sum := sum + o;
    end;
    if sum mod 2 <> 0 then
    begin
      n := n + 1;
      writeln('Сумма цифр числа ', p[i], ' нечётная');
    end
    else
      writeln('Сумма цифр числа ', p[i], ' чётная');
  end;
 end;
 writeln('Кол-во простых чисел с нечётной суммой цифр: ', n);
end.
Другие задания