Найдем количество простых чисел на промежутке [ 2 000 000, 10 000 000].
Воспользуемся функцией модуля School. Функция isPrime возвращает логическое True, если число простое.
Формат использования: n.isPrime
Программа решения задачи на языке Паскаль
uses school;
var n,p:integer;
begin
p:=0;
for n:=2000000 to 10000000 do
begin
if n.IsPrime then p+=1;
end;
print(p);
end.
Код выполнился за 17 секунд.
Количество простых чисел на промежутке чисел [2000000, 10000000] равно: 515646
Функция isPrime избавляет от необходимости писать код самостоятельно.
Приведем программу, которая ищет сразу два делителя для текущего числа n.
Программа решения задачи на языке Паскаль
var n,p,t,k:integer;
begin
p:=0;
for n:=2000000 to 10000000 do
begin
t:=0;
for k:=2 to trunc(sqrt(n)) do
begin
if n mod k=0 then
if k<>n div k then t+=2
else t+=1;
end;
if t=0 then p+=1;
end;
print(p);
end.
Код выполнился примерно за 6 мин
Использование функции isPrime оправданно, время выполнения программы для больших чисел значительно меньше.
Комментариев нет:
Отправить комментарий