辺の和がMin以上Max以下の直角三角形の個数を求める(Min,Max,_個数) :- findall(N2,(for(1,N,Max),N2 is truncate(N*N)),L1), count((for(1,N1,Max),辺の和がM以下の直角三角形(N1,Min,Max,L1,Sum)),_個数).
辺の和がM以下の直角三角形(N,Min,Max,L1,Sum) :- N2 is N * N, member(A,L1), U is truncate(A + N2), member(U,L1), Sum is truncate(sqrt(A) + sqrt(U) + N), Sum >= Min, Sum =< Max.