Разработать подпрограмму, определяющую, является ли целое число простым - PascalABC.NET
Формулировка задачи:
дбрый день!
3. Разработать подпрограммы (функции или процедуры):
• prostoe(), которая определяет, является ли целое действительное число простым;
• sostavnoe(), которая выводит в порядке убывания все делители составного действительного числа.
Используя функции, определить значения всех простых чисел в диапазоне от 150 до 250, и все делители длясоставных чисел.Вывод результатов осуществлять в цикле, блоками по 10 значений, после которых требуется нажать клавишу с клавиатуры.
Примечание: простым называется число, которое делится только на само себя и на 1. Результаты обработки значений должны выводиться в одном цикле.
Решение задачи: «Разработать подпрограмму, определяющую, является ли целое число простым»
textual
Листинг программы
function prostoe(n: integer): boolean;
var i, sqrtn, delta: integer;
begin
if (n >= 5) and ((n - 1) mod 6 = 0) or ((n + 1) mod 6 = 0)
then begin
i := 5;
delta := 2;
sqrtn := trunc(sqrt(n));
prostoe := false;
while i <= sqrtn do
begin
if n mod i = 0 then Exit;
inc(i, delta);
delta := delta xor 6; {смена шага, то 2, то 4}
end;
prostoe := true;
end
else prostoe := (n = 2) or (n = 3)
end;
procedure sostavnoe(n: integer);
var i: integer;
begin
write(n:4);
for i := n div 2 downto 2 do if n mod i = 0 then write(i:4);
writeln(1:4)
end;
var x: integer;
begin
for x := 150 to 250 do
begin
write(x:4, ': ');
if prostoe(x)
then writeln('простое')
else begin
writeln('составное, делители числа: ');
sostavnoe(x)
end;
if x mod 10 = 9
then begin
write('Нажмите <Enter> для продолжения.');
readln
end
end;
write('Нажмите <Enter> для выхода.');
readln
end.
Объяснение кода листинга программы
- Создается функция
prostoe(n: integer): boolean, которая принимает целое числоnи возвращает логическое значениеtrue, если число простое, иfalse, если число составное. - В функции определены следующие переменные:
i: переменная для цикла,sqrtn: квадратный корень из числаn,delta: шаг для перебора делителей.
- Проверяется, является ли число
nбольше или равным 5 и при этом делится на 6 без остатка. Если это так, то выполняется код для составного числа. - В процедуре
sostavnoe(n: integer)выводится само числоnи все его делители, которые меньше самого числа. - В основной программе создается переменная
x, которая перебирает числа от 150 до 250. - Для каждого числа
xвыполняется следующий код:- Выводится число
x, - Проверяется, является ли число
xпростым с помощью функцииprostoe(x). - Если число простое, то выводится сообщение
простое. - Если число составное, то выводится сообщение
составное, делители числа:и вызывается процедураsostavnoe(x). - После каждого десятка чисел выводится сообщение
Нажмите <Enter> для продолжения..
- Выводится число
- В конце программы выводится сообщение
Нажмите <Enter> для выхода..