21.02.2023

Модуль School. PascalABC.NET. Функция isPrime

 Найдем количество простых чисел на промежутке [ 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 оправданно, время выполнения программы для больших чисел значительно меньше.

Комментариев нет:

Отправить комментарий