17 lines
454 B
Prolog
17 lines
454 B
Prolog
factors( N, FS):-
|
|
factors2( N, FS).
|
|
|
|
factors2( N, FS):-
|
|
( N < 2 -> FS = []
|
|
; 4 > N -> FS = [N]
|
|
; 0 is N rem 2 -> FS = [K|FS2], N2 is N div 2, factors2( N2, FS2)
|
|
; factors( N, 3, FS)
|
|
).
|
|
|
|
factors( N, K, FS):-
|
|
( N < 2 -> FS = []
|
|
; K*K > N -> FS = [N]
|
|
; 0 is N rem K -> FS = [K|FS2], N2 is N div K, factors( N2, K, FS2)
|
|
; K2 is K+2, factors( N, K2, FS)
|
|
).
|