Turbo pascal и Простые числа
Простое число — натуральное число, которое делится только на единицу и само на себя. Ряд простых чисел: 2, 3, 5, 7, 11. Самым большим из известных простых чисел является 2 43112609 -1 (Число Мерсенна).
Как найти простые числа в Паскале?
Найти простые числа в паскале можно несколькими способами. Однако, все способы их нахождения основываются на переборе чисел. Самым простым алгоритмом нахождения простых чисел в pascal является организация цикла от 3 до заданного верхнего предела, где перебираемые числа делятся на все значения от 2 до N-1. Само собой, что единица и само число не считается в качестве делителя.
На языке Паскаль делать алгоритм быстрее можно если делить все числа от 2 до корня из N включительно
while (i mod j <> 0) and (j <= lim) do inc( j );
if (j > lim) then write( i,’ ‘ );
Усовершенствовать алгоритм можно посредством деления цифр, оканчивающихся только на 1, 3, 7 или 9. Числа, оканчивающиеся на 0 и 5 не могут являться простыми, также как и четные числа.
Простые числа — Нахождение всех простых чисел в Паскале от 1 до N
Простые числа и их квадраты — Вывод в Turbo Pascal простых чисел и их квадратов
Алгоритм нахождения простых чисел
Дело было давно, в университете, когда мы начали изучать язык программирования Pascal и домашним заданием стало создание алгоритма нахождения простых чисел.
Алгоритм был придуман и тутже реализован на изучаемом языке. Программа запрашивала у пользователя число N и искала все простые числа до N включительно. После первого успешного теста сразу же возникло непреодолимое желание ввести N = «много». Программа работала, но не так быстро как хотелось бы. Естественно, дело было в многочисленных проверках (порядка N*N/2), поэтому пришлось избавиться от лишних. В итоге получилось 5 похожих алгоритмов каждый из которых работал быстре предыдущего. Недавно захотелось их вспомнить и реализовать, но на этот раз на Python.
Итак, поехали. Первый алгоритм, ударивший в студенческую голову, продемонстрирован в Листинге 1.
# Листинг 1 # вводим N n = input(«n python»># Листинг 2 n = input(«n python»># Листинг 3 n = input(«n python»># Листинг 4 from math import sqrt n = input(«n python»># Листинг 5 from math import sqrt n = input(«n python»># Листинг 6 from math import sqrt n = input(«n python»># Листинг 7 n = input(«n python»># Листинг 8 n = input(«n v-portal» style=»display:none;»>
Pascal => нужна идея, которая поможет мне определить : простое число или нет.
Уже пару тысяч лет люди думают (как минимум, Евклид) над тем, как искать простые числа. И тебе еще нужны новые идеи? Гугл знает.
var i,n: integer;
prostoe: boolean;
Write(‘Введите число n=’); Readln(n);
if n<3 then goto skok;
for i:=2 to n-1 do
if (n mod i)=0 then prostoe:=false;
if prostoe then Writeln(‘Число простое’)
else Writeln(‘Число непростое’);
Readln;
End.
вот пример из делфи, если руки не кривые переделаешь на паскаль
procedure TForm1.Button1Click(Sender: TObject);
var
n: integer; // проверяемое число
d: integer; // делитель
r: integer; // остаток от деления n на d
begin
n := StrToInt(Edit1.text);
d := 2; // сначала будем делить на два
repeat
r := n mod d;
if r <> 0/ n не разделилось нацело на d> then
d := d + 1;
until r = 0; // повторять пока не найдено число на n делится без остатка
label2.caption := Edit1.text;
if d = n then
label2.caption := label2.caption + ‘ — простое число. ‘
else
label2.caption := label2.caption + ‘ — обычное число. ‘;
end;
end.
]Маньячка [, программа не работает при вводе числа до 4-х =\
вот моя версия, кода правда много (учусь) :
program chislo;
var a : integer;
begin
writeln(‘Введите число’);
readln(a);
if (a<=3) then
begin
writeln(‘Простое число’);
readln;
end
else
begin
if (a mod 2 = 0) or (a mod 3 = 0) then
begin
writeln(‘Непростое число’);
readln;
end
else
begin
writeln (‘Простое число’);
readln;
end;
end;
end.