Разработать подпрограмму, определяющую, является ли целое число простым - 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> для выхода.
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д