tasks a-s
This commit is contained in:
parent
47bf37c096
commit
b83f433714
12433 changed files with 156208 additions and 123 deletions
37
Task/Prime-decomposition/Prolog/prime-decomposition-1.pro
Normal file
37
Task/Prime-decomposition/Prolog/prime-decomposition-1.pro
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
prime_decomp(N, L) :-
|
||||
SN is sqrt(N),
|
||||
prime_decomp_1(N, SN, 2, [], L).
|
||||
|
||||
|
||||
prime_decomp_1(1, _, _, L, L) :- !.
|
||||
|
||||
% Special case for 2, increment 1
|
||||
prime_decomp_1(N, SN, D, L, LF) :-
|
||||
( 0 is N mod D ->
|
||||
Q is N / D,
|
||||
SQ is sqrt(Q),
|
||||
prime_decomp_1(Q, SQ, D, [D |L], LF)
|
||||
;
|
||||
D1 is D+1,
|
||||
( D1 > SN ->
|
||||
LF = [N |L]
|
||||
;
|
||||
prime_decomp_2(N, SN, D1, L, LF)
|
||||
)
|
||||
).
|
||||
|
||||
% General case, increment 2
|
||||
prime_decomp_2(1, _, _, L, L) :- !.
|
||||
|
||||
prime_decomp_2(N, SN, D, L, LF) :-
|
||||
( 0 is N mod D ->
|
||||
Q is N / D,
|
||||
SQ is sqrt(Q),
|
||||
prime_decomp_2(Q, SQ, D, [D |L], LF);
|
||||
D1 is D+2,
|
||||
( D1 > SN ->
|
||||
LF = [N |L]
|
||||
;
|
||||
prime_decomp_2(N, SN, D1, L, LF)
|
||||
)
|
||||
).
|
||||
11
Task/Prime-decomposition/Prolog/prime-decomposition-2.pro
Normal file
11
Task/Prime-decomposition/Prolog/prime-decomposition-2.pro
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
?- time(prime_decomp(9007199254740991, L)).
|
||||
% 138,882 inferences, 0.344 CPU in 0.357 seconds (96% CPU, 404020 Lips)
|
||||
L = [20394401,69431,6361].
|
||||
|
||||
?- time(prime_decomp(576460752303423487, L)).
|
||||
% 2,684,734 inferences, 0.672 CPU in 0.671 seconds (100% CPU, 3995883 Lips)
|
||||
L = [3203431780337,179951].
|
||||
|
||||
?- time(prime_decomp(1361129467683753853853498429727072845823, L)).
|
||||
% 18,080,807 inferences, 7.953 CPU in 7.973 seconds (100% CPU, 2273422 Lips)
|
||||
L = [145295143558111,7623851,409891,8191,2731,131,31,11,3].
|
||||
Loading…
Add table
Add a link
Reference in a new issue