Prolog 除数

发布于 2025-01-16 22:35:00 字数 501 浏览 0 评论 0原文

编写一个谓词来计算列表中每个项目的每个除数。 (除数不能是 1 和他自己)。 这就是我编写数字除数代码的方法。但我不知道更多。

divides(N,D) :-
    0 is N mod D,
    D < N/2,
    D > 1.

divisors_0( N, D, R0,[D|R0] ) :-    divides(N,D).
divisors_0( N, D, R0,   R0  ) :- \+ divides(N,D).

divisors( _, 0,  R,  R ).
divisors( N, D0, R0, R ) :-
    divisors_0(N,D0,R0,R1),
    D is D0 - 1,
    divisors(N,D,R1,R).

divisors(X,R) :-
    X > 1,
    divisors(X,X,[],R),
    !.

为了吸引我使用:divisors(number *like 45,24, etc *, X)

Write a predicate that calculates every divisors of every item in a list. (the divisor can't be 1 and himself).
That's how I did the code for divisors of a number. But I don't know more.

divides(N,D) :-
    0 is N mod D,
    D < N/2,
    D > 1.

divisors_0( N, D, R0,[D|R0] ) :-    divides(N,D).
divisors_0( N, D, R0,   R0  ) :- \+ divides(N,D).

divisors( _, 0,  R,  R ).
divisors( N, D0, R0, R ) :-
    divisors_0(N,D0,R0,R1),
    D is D0 - 1,
    divisors(N,D,R1,R).

divisors(X,R) :-
    X > 1,
    divisors(X,X,[],R),
    !.

For appelating I use : divisors(number *like 45,24, etc *, X)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夏夜暖风 2025-01-23 22:35:00

一个可能的解决方案可能是:

divisor(N1,N,[]):-
    N1 > N/2, !.
divisor(N1,N,[N1|T]):-
    N1 =< N/2,
    0 is N mod N1, !,
    N2 is N1 + 1,
    divisor(N2,N,T).
divisor(N1,N,L):-
    N1 =< N/2,
    N2 is N1 + 1,
    divisor(N2,N,L).
divisors(L,LR):-
    maplist(divisor(2),L,LR).

?- L = [11,12], divisors(L,LR).
L = [11, 12],
LR = [[], [2, 3, 4, 6]]

A possible solution could be:

divisor(N1,N,[]):-
    N1 > N/2, !.
divisor(N1,N,[N1|T]):-
    N1 =< N/2,
    0 is N mod N1, !,
    N2 is N1 + 1,
    divisor(N2,N,T).
divisor(N1,N,L):-
    N1 =< N/2,
    N2 is N1 + 1,
    divisor(N2,N,L).
divisors(L,LR):-
    maplist(divisor(2),L,LR).

?- L = [11,12], divisors(L,LR).
L = [11, 12],
LR = [[], [2, 3, 4, 6]]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文