Написать решение данной задачи в паскале. Используя только одну подпрограмму, в которой будет проверка делителей на простоту.Заданы два целых числа М, N. Определить, больше ли сумма простых делителей числа М, произведения составных делителей числа N.
program divisors; function isPrime(num: Integer): Boolean; var i: Integer; begin isPrime := True; if (num < 2) then isPrime := False else begin i := 2; while (i * i <= num) and isPrime do begin if (num mod i = 0) then isPrime := False; i := i + 1; end; end; end; var M, N, sumPrimes, productComposites, i: Integer; begin sumPrimes := 0; productComposites := 1; Write('Enter number M: '); Readln(M); Write('Enter number N: '); Readln(N); for i := 1 to M div 2 do begin if (M mod i = 0) and isPrime(i) then sumPrimes := sumPrimes + i; end; for i := 2 to N div 2 do begin if (N mod i = 0) and not isPrime(i) then productComposites := productComposites * i; end; if (sumPrimes > productComposites) then writeln('Sum of prime divisors of M is greater than product of composite divisors of N') else writeln('Sum of prime divisors of M is not greater than product of composite divisors of N'); end.
Программа сначала определяет функцию isPrime, которая проверяет, является ли число простым. Затем она запрашивает у пользователя два целых числа M и N. Далее программа вычисляет сумму всех простых делителей числа M и произведение всех составных делителей числа N. И наконец, программа сравнивает полученные значения и выводит соответствующее сообщение.
function isPrime(num: Integer): Boolean;
var
i: Integer;
begin
isPrime := True;
if (num < 2) then
isPrime := False
else
begin
i := 2;
while (i * i <= num) and isPrime do
begin
if (num mod i = 0) then
isPrime := False;
i := i + 1;
end;
end;
end;
var
M, N, sumPrimes, productComposites, i: Integer;
begin
sumPrimes := 0;
productComposites := 1;
Write('Enter number M: ');
Readln(M);
Write('Enter number N: ');
Readln(N);
for i := 1 to M div 2 do
begin
if (M mod i = 0) and isPrime(i) then
sumPrimes := sumPrimes + i;
end;
for i := 2 to N div 2 do
begin
if (N mod i = 0) and not isPrime(i) then
productComposites := productComposites * i;
end;
if (sumPrimes > productComposites) then
writeln('Sum of prime divisors of M is greater than product of composite divisors of N')
else
writeln('Sum of prime divisors of M is not greater than product of composite divisors of N');
end.
Программа сначала определяет функцию isPrime, которая проверяет, является ли число простым. Затем она запрашивает у пользователя два целых числа M и N. Далее программа вычисляет сумму всех простых делителей числа M и произведение всех составных делителей числа N. И наконец, программа сравнивает полученные значения и выводит соответствующее сообщение.