繁体   English   中英

列表上的Prolog计算

[英]Prolog calculation on a list

我是新手,请耐心等待,

因此,我有一些代码可以将所有素数都提取到一定数量。

primes_up_to(X,L):-
    findall(Y,
        (between(2,X,Y), is_prime(Y) ),
        L).

现在,我想获取该列表,并检查每个质数是否可以除以X,因此可以对其进行分解。

到目前为止,这是我的代码。

factorise(X, F):-
    X > 3,
    primes_up_to(X, L),
    write(L),

如何使用L检查给定的列表元素是否可以划分为X

我想我必须写这样的人:

0 is ListElement mod X

但是我需要对每个元素都这样做

您编写“因式分解”,所以我想您对已知多重因素感兴趣。

我建议以下factors/3

factors(1, _, []).

factors(Num, [H|Tp], [H|Tf]) :-
  Num > 1,
  0 is mod(Num,H),
  Quot is Num // H,
  factors(Quot, [H|Tp], Tf).

factors(Num, [H|Tp], Tf) :-
  Num > 1,
  \+ 0 is mod(Num,H),
  factors(Num, Tp, Tf).

如果您对多种因素不感兴趣,则代码可以更简单

factors(_, [], []).

factors(Num, [H|Tp], [H|Tf]) :-
  0 is mod(Num,H),
  factors(Num, Tp, Tf).

factors(Num, [H|Tp], Tf) :-
  \+ 0 is mod(Num,H),
  factors(Num, Tp, Tf).

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM