簡體   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