Определить количество простых чисел из диапазона [2, n] - Prolog

Узнай цену своей работы

Формулировка задачи:

Определить количество простых чисел из диапазона [2, n]

Решение задачи: «Определить количество простых чисел из диапазона [2, n]»

textual
Листинг программы
predicates
is_prime(integer,integer)
task(integer,integer,integer)
 
clauses
is_prime(N,K) :- K > sqrt(N).
is_prime(N,K) :- N mod K = 0, fail.
is_prime(N,K) :- N mod K <> 0, K1=K+1, is_prime(N,K1).
 
task(B,E,0) :- B>E,!.
task(B,E,K) :- B<=E,is_prime(B,2), B1=B+1, task(B1,E,Q), K=Q+1,!.
task(B,E,K) :- B1=B+1, task(B1,E,K).

Объяснение кода листинга программы

Код решает задачу поиска количества простых чисел в заданном диапазоне [2, n] с помощью рекурсивного вызова. В коде присутствуют три предиката:

  1. is_prime(N,K) - проверяет является ли число N простым, используя метод перебора делителей от 2 до K. Если число делится на какое-то число из этого диапазона, то оно не является простым. Если же число не делится ни на одно из этих чисел, то оно простое.
  2. task(B,E,K) - главный предикат, который выполняет задачу поиска количества простых чисел в заданном диапазоне [B, E]. Рекурсивно вызывается для каждого числа в диапазоне и увеличивает счетчик простых чисел K.
  3. sqrt(N) - вычисляет квадратный корень из числа N. В первой линии задачи (task(B,E,0)) устанавливается базовый случай, когда значение E меньше или равно значению B, что означает, что диапазон пуст, и в этом случае задача считается выполненной. Во второй линии задачи (task(B,E,K)) проверяется, является ли число B простым с помощью предиката is_prime(B,2). Если число B не является простым, то задача рекурсивно вызывается для следующего числа в диапазоне (B1=B+1) с добавлением единицы к счетчику простых чисел (K=Q+1). Если же число B является простым, то задача рекурсивно вызывается для следующего числа в диапазоне (B1=B+1) без изменения счетчика простых чисел (K=Q). В третьей линии задачи (task(B,E,K)) выполняется рекурсивный вызов для следующего числа в диапазоне (B1=B+1). Таким образом, код выполняет рекурсивный обход чисел в заданном диапазоне и подсчитывает количество простых чисел с помощью счетчика K.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.286 из 5
Похожие ответы