Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Chriss Miller on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Finding Factors

Status
Not open for further replies.

DemonFTW

Programmer
Joined
Mar 15, 2010
Messages
1
Location
GB
Hi,

I need to write a rule to find all the factors of a given number, this is that i have so far:

Code:
% "divisible without remainder function"
dwr(X, M) :- 0 is X mod M.

factors_of(X):-
	D is 1,
	findfactors(X, D).

findfactors(X, D):-
	D = X,
	F is X / D,
	write(F).

findfactors(X, D):-
	D < X,
	E is D + 1,
	findfactors(X, E),
	Factor is X / D,
	dwr(X, D), <--------- This line
	nl,
	write(Factor).

Notice the marked line, if i have that line there it will fail as soon as it gets to a number which isn't a factor and not return me any results after X, but without that line it will returnX divided by all of the lower numbers.

Is there a way to make it skip the non-factor numbers and still return the factors without failing ?

Or is there a better way to do this ? (I have to do this using recursion).

Thanks.
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top