序言中给定数字的质因数列表与基础知识

问题描述

实际上我在学校有一项任务是找到给定数字的所有质因数并将它们作为列表返回,但我有点挣扎,因为我在序言方面还是新手。 这是我的代码:

divisible(A,B) :-A mod B =:= 0,!.
divisible(A,B) :-A > B + 1,divisible(A,B + 1).
isPrime(2).
isPrime(A) :-not(divisible(A,2)).

nextPrime(A,P) :-P is A + 1,isPrime(P),!.
nextPrime(A,P) :-A0 is A + 1,nextPrime(A0,P).

primeFactors(B,L):-primeFactors(B,L,2).

primeFactors(2,[2],_).
primeFactors(3,[3],_).
primeFactors(B,C):-B>3,C<B//2,B mod C =:= 0,add_tail(L,C,L1),B1 is B//C,primeFactors(B1,L1,C).
primeFactors(B,nextPrime(C,C1),primeFactors(B,C1).

add_tail([],X,[X]).
add_tail([H|T],[H|L]):-add_tail(T,L).

想法是从 primeFactors/2 开始,然后从那里转发到 primeFactors/3,其中 C 是素数除法器,因此用户更容易调用它。 B 是给定的数字,L 是我要返回的列表。

我应该指出,isPrime、nextPrime 和 add_tail 单独工作得非常好。

我看到网上有一些解决这个问题的方法,但我仍然只有prolog的基本知识。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...