Список простых множителей числа

      Комментарии к записи Список простых множителей числа отключены

В этой теме 0 ответов, 1 участник, последнее обновление  Васильев Владимир Сергеевич 2 мес., 2 нед. назад.

  • Автор
    Сообщения
  • #3285

    Нужно решить на языке Prolog задачу: создать список простых множителей заданного целого числа.

    domains 
    	list = integer*
    predicates
      	prime_factor_list(integer, list)
      	prime_factor_list(integer, integer, list)
    clauses
    	prime_factor_list(Number, PrimeFactors):-
    		prime_factor_list(Number, 1, PrimeFactors).
    		
    	prime_factor_list(Number, Number, []):-!.
    	prime_factor_list(Number, Iter, [Iter|Tail]):-
    		isPrime(Iter), !,
    		NextIter = Iter + 1,
    		prime_factor_list(Number, NextIter, Tail).
    	prime_factor_list(Number, Iter, Tail):-
    		NextIter = Iter + 1,
    		prime_factor_list(Number, NextIter, Tail).
    goal
      	prime_factor_list(40, X).

    prime_factor_list

    Функция isPrime проверяет число на простоту.

    Основная функция принимает число (Number) и возвращает список его простых делителей. Мы будем перебирать все числа от 1 до Number, проверяя каждое на простоту и добавляя его к списку если проверка удачна. Для этого нужна еще одна (вспомогательная функция), дополнительным аргументом которой является текущее значение итератора. Вычисления заканчиваются когда итератор достигнет значение исходного числа.

Для ответа в этой теме необходимо авторизоваться.