/* Euler Problem 12 in SWI Prolog Problem 12 """ The sequence of triangle numbers is generated by adding the natural numbers. So the 7th triangle number would be 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28. The first ten terms would be: 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ... Let us list the factors of the first seven triangle numbers: 1: 1 3: 1,3 6: 1,2,3,6 10: 1,2,5,10 15: 1,3,5,15 21: 1,3,7,21 28: 1,2,4,7,14,28 We can see that the 7th triangle number, 28, is the first triangle number to have over five divisors. Which is the first triangle number to have over five-hundred divisors?") """ Model created by Hakan Kjellerstrand, hakank@gmail.com See also my SWI Prolog page: http://www.hakank.org/swi_prolog/ */ :- use_module(library(clpfd)). :- use_module(hakank_utils). :- use_module(euler_utils). go :- L = [ euler12a ], run_problems(L). %% %% 0.95s %% euler12a :- e12a(0,0,Num,0,Len), writeln([num=Num,len=Len]). e12a(_N,Num,Num,Len,Len) :- Len > 500. e12a(N,Num0,Num,Len0,Len) :- Len0 < 500, Num1 is Num0+N+1, % the N'th triangle number num_divisors(Num1,Len1), N1 is N+1, e12a(N1,Num1,Num,Len1,Len).