1
주어진 숫자에 대한 약수를 계산할 술어에 대한 연구를하고 있습니다. 그것은 그들 모두를 세지는 않을 것이지만 그것이 두 가지 이상의 요인을 가지고 있다는 것을 알기에 충분할 것입니다. 여기에 내가 무엇을 가지고 : 그러나프롤로그 카운트 제수
countFactors([_,_,_,_X]):-!.
countFactors(Product, Count,Divisor, _X):-
Divisor =< Product/2,
Product mod Divisor = 0,
NewC is Count + 1,
NextD is Divisor + 1,
countFactors(Product,NewC, NextD, NewC).
, countFactors (16,0,2, X)를 실행. 단순히 반환 X = 2
EDIT : 좋아, 그래서 지금 왜 나는 false를 반환 깨닫습니다 : 문제의 제수 요인 및 재귀 경우 잘 작동합니다. 그러나 요소가 아니라면 false를 제공하지만 다음 나누기로 증가하지는 않으며 중지하고 false를 반환합니다.
제 질문은 어떻게 수정합니까?
죄송합니다. 귀하 께서 여기서 한 일을 정말로 이해하지 못합니다. 이 모든 작업은 입력 제품에 대해 X = 2를 반환합니다. 즉 countFactors (3,0,2, X). X = 2를 반환합니다. 분명히 이것은 사실이 아닙니다 ... – XavierNuquos
죄송합니다, 디버깅하지 못했습니다 ... – CapelliC