Найти близкое наименьшее простое число - Free Pascal
Формулировка задачи:
Помогите с задачей, благодарен заранее:
Ввести число N. Найти близкое наименьшее простоe число. (Пример если N = 10 , результат будет 7);
Решение задачи: «Найти близкое наименьшее простое число»
textual
Листинг программы
function prost(x:integer):boolean;
var y:integer;
f:boolean;
begin
x:=abs(x);
if x<2 then f:=false{0,1 не простое}
else if x=2 then f:=true{2 простое}
else if x mod 2=0 then f:=false{четные больше 2 не простые}
else
begin
f:=true;
y:=3;
while(y*y<=x)and f do
if x mod y=0 then f:=false
else inc(y,2);
end;
prost:=f
end;
var n,m:integer;
begin
write('n=');
readln(n);
if n<2 then m:=2
else if n=2 then m:=3
else
begin
m:=n-1;
while not prost(m)do inc(m);
end;
write('Наименьшее близкое простое=',m);
readln
end.
Объяснение кода листинга программы
- Функция
prostпринимает целое числоxи возвращает логическое значениеtrue, если числоxявляется простым, иfalseв противном случае. - В функции используется переменная
yдля хранения текущего проверяемого делителя числаx. - Переменная
fиспользуется для хранения результата проверки на простоту числаx. - Если число
xменьше 2, то оно не является простым и функция возвращаетfalse. - Если число
xравно 2, то оно является простым и функция возвращаетtrue. - Если число
xчетное, то оно не является простым и функция возвращаетfalse. - Если число
xнечетное, то оно может быть простым и функция начинает поиск делителя. - Переменная
yинициализируется значением 3. - В цикле while проверяется, является ли текущий делитель
yделителем числаx. - Если число
xделится наyбез остатка, то оно не является простым и функция возвращаетfalse. - Если число
xне делится наyбез остатка, то текущее значениеyувеличивается на 2. - Цикл while продолжается, пока
yменьше или равно квадратному корню из числаxи функция возвращаетtrue. - Если число
xне является простым, то переменнаяmинициализируется значением 2. - Если число
xравно 2, то переменнаяmинициализируется значением 3. - Если число
xбольше 2, то переменнаяmинициализируется значениемx-1. - В цикле while проверяется, является ли текущее значение
mпростым числом. - Если число
mне является простым, то оно увеличивается на 1. - Цикл while продолжается, пока число
mне станет простым. - После выхода из цикла while, значение переменной
mвыводится на экран. - Программа завершается чтением значения из стандартного ввода.