我试图编写一个函数 -noPrime(X,Result)
它给出了 range 中所有非主数的列表[X-1,2]
。
例如 -
noPrime(9,Result).
Result = [8,6,4]
到目前为止,我尝试了以下操作 -
nprimes(4,[]) :- !.
nprimes(X,[H|Rest]) :- H is X-1,nprimes(H,NewRest),
( isPrime(H) -> Rest = NewRest; Rest = [H|NewRest]).
但它给了 -
Result = [8, 8, 7, 6, 6, 5, 4, 4].
似乎它复制了 non-primary 并给出了一次 primary 。
isPrime - 是我自己的功能,效果很好。
你能发现这里有什么问题以及如何纠正它吗?