ClearAll[FindPrimeTriangles, FindPrimeTrianglesHelper] FindPrimeTriangles[max_] := Module[{count = 0, firstsolution, primes, primeQ}, primes = PrimeQ[Range[2 max]]; primeQ[n_] := primes[[n]]; ClearAll[FindPrimeTrianglesHelper]; FindPrimeTrianglesHelper[start_, remainder_, mxx_] := Module[{last, nexts, r, newstart, newremainder}, If[Length[remainder] > 0, last = Last[start]; Do[ r = remainder[[ri]]; If[primeQ[last + r], newstart = Append[start, r]; newremainder = Delete[remainder, ri]; FindPrimeTrianglesHelper[newstart, newremainder, mxx] ] , {ri, Length[remainder]} ] , If[primeQ[Last[start] + mxx], count++; If[count == 1, Print[Append[start, mxx]] ] ] ] ]; FindPrimeTrianglesHelper[{1}, Range[2, max - 1], max]; count ] Table[FindPrimeTriangles[S],{S, 2, 20}]