Другие языки программирования и технологии

Помогите плз решение задачи по Паскулю!!! Дано натуральное число и определить яв-ся ли оно простым.

Sera Mamedov
Sera Mamedov
174
Ещё короче:
var a,x:longint;
begin
write('Введите число: ');
readln(a);
x := 2;
while (x <= sqrt(a)) and (a mod x <> 0) do
inc(x,1+ord(x > 2));
writeln(a,' - простое? ',(a < 4) or (a mod x <>0));
readln
end.

Проверяется делимость на 2. Если не делится, то число нечётное и проверять делимость на 4, 6, 8,.. нет смысла.
После 2 проверяется делимость только на нечётные числа.
Эдуард Шакиров
Эдуард Шакиров
51 590
Лучший ответ
Уж коли на то дело пошло, то крутить нужно только до ЦЕЛОЕ ( КОРЕНЬ (n) ). Все остальное - лишнее.
Андрей Попов
Андрей Попов
72 360
program chislo;
var
x, kod, i:integer;
begin
kod = 0;
write('Ввод x: ');
readln(x);
for i:=2 to x-1 do
if (x mod i = 0) then
kod:= kod+1;
if (kod = 0)
writeln('Это простое число');
else
writeln('Не является простым числом');
end.
Денис Кельин
Денис Кельин
6 106
Реализация Полосатыйжираф Алик
var x,i:integer;
error:boolean;
begin
read(x);
i:=2;
while (i<=sqrt(x)) and (x mod i <> 0) do
i:=i+1;
if (x mod i<>0) writeln('Simple')
else writeln('Not Simple');
end.
Нужно экономить время :

var
n,i : integer;
yes : boolean;

begin

readln(n);
yes := true;
for i := 2 to n-1 do
if n mod i = 0 then
begin
writeln("Составное");
yes := false;
break;
end;

if yes = true then
writeln("Простое");

end.

Дело в том, что если попадётся число, допустим, шестизначное, то считать будет в худшем случае одинаково с верхним примером кода, но в лучшем случае алгоритм завершится на втором этапе, сэкономив время.

Парень ниже тоже дело говорит =)

Похожие вопросы