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.