Ещё короче:
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 проверяется делимость только на нечётные числа.
Другие языки программирования и технологии
Помогите плз решение задачи по Паскулю!!! Дано натуральное число и определить яв-ся ли оно простым.
Уж коли на то дело пошло, то крутить нужно только до ЦЕЛОЕ ( КОРЕНЬ (n) ). Все остальное - лишнее.
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.
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.
Реализация Полосатыйжираф Алик
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 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.
Дело в том, что если попадётся число, допустим, шестизначное, то считать будет в худшем случае одинаково с верхним примером кода, но в лучшем случае алгоритм завершится на втором этапе, сэкономив время.
Парень ниже тоже дело говорит =)
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.
Дело в том, что если попадётся число, допустим, шестизначное, то считать будет в худшем случае одинаково с верхним примером кода, но в лучшем случае алгоритм завершится на втором этапе, сэкономив время.
Парень ниже тоже дело говорит =)
Похожие вопросы
- дано натуральное число N. Определить является ли оно полиндромом. Паскаль
- как решить через abc pascal задачу "Дано натуральное число n. Получить все простые делители этого числа"
- Помогите с Pascal. Дано натуральное число. Определите сумму m его последних цифр отличных от 0
- Дано натуральное число n и вещественная матрица размера n X 9 . Плиз помогите(
- Паскаль. Дано натуральное число. Верно ли , что цифра А встречается в нем более К раз.
- Помогите пожалуйста!Паскаль. Дано натуральное число N. Получить наименьшее число вида 2(m в степени), превосходящее N.
- Помогите решить задачу по программированию. Дано четырёхзначное число. Найти: а) сумму его цифр; б) произведение его циф
- Дано натуральное число. Определить количество его цифр, кратных z. Написать в Паскаль
- Дано натуральное число п. Найти знакочередующуюся сумму цифр числа n:
- Помогите плз решить задачу в Delphi.