Factors of an integer: Difference between revisions

Content added Content deleted
(Added missing include. Now the code compiles (tested with g++))
Line 885: Line 885:
'((D) (=0 (% N D)))
'((D) (=0 (% N D)))
(range 1 N) ) )</lang>
(range 1 N) ) )</lang>
=={{header|Prolog}}==
<lang Prolog>factor(N, L) :-
factor(N, 1, [], L).

factor(N, X, LC, L) :-
0 is N mod X,
!,
Q is N / X,
(Q = X ->
sort([Q | LC], L)
;
(Q > X ->
X1 is X+1,
factor(N, X1, [X, Q|LC], L)
;
sort(LC, L)
)
).

factor(N, X, LC, L) :-
Q is N / X,
(Q > X ->
X1 is X+1,
factor(N, X1, LC, L)
;
sort(LC, L)
).
</lang>
Output :
<lang> ?- factor(36, L).
L = [1,2,3,4,6,9,12,18,36].

?- factor(53, L).
L = [1,53].

?- factor(32765, L).
L = [1,5,6553,32765].

?- factor(32766, L).
L = [1,2,3,6,43,86,127,129,254,258,381,762,5461,10922,16383,32766].

?- factor(32767, L).
L = [1,7,31,151,217,1057,4681,32767].

</lang>
=={{header|PureBasic}}==
=={{header|PureBasic}}==
<lang PureBasic>Procedure PrintFactors(n)
<lang PureBasic>Procedure PrintFactors(n)