gpt4 book ai didi

prolog - 给定范围序言的素数列表

转载 作者:行者123 更新时间:2023-12-04 23:25:53 25 4
gpt4 key购买 nike

我是 Prolog 的新手,我需要为给定范围创建一个质数列表。
例子

?- p_list(3,23,X).
X = [3, 5, 7, 11, 13, 17, 19, 23].

最佳答案

我搞定了。如果其他人需要它,我会发布答案。

is_prime(2).
is_prime(3).
is_prime(P) :-
integer(P),
P > 3,
P mod 2 =\= 0,
\+ has_factor(P,3).

has_factor(N,L) :- N mod L =:= 0.
has_factor(N,L) :-
L * L < N,
L2 is L + 2,
has_factor(N,L2).

prime_list(A,B,L) :-
A1 is (A // 2) * 2 + 1,
p_list(A1,B,L).


p_list(A,B,[]) :- A > B, !.
p_list(A,B,[A|L]) :-
is_prime(A), !,
next(A,A1),
p_list(A1,B,L).

p_list(A,B,L) :-
next(A,A1),
p_list(A1,B,L).

next(2,3) :- !.
next(A,A1) :- A1 is A + 2.

关于prolog - 给定范围序言的素数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13038057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com