On Sunday, 13 December 2015 at 03:08:33 UTC, Namal wrote:
This works for me : import std.stdio, std.algorithm, std.range; int[] prim_factors(int n, const int[] P) { int[] v; P.filter!( x => x*x <= n).each!( (i) { while (n % i == 0) { v ~= i; n /= i; if (i == 1) break; // infinite loop otherwise ! } } ); if (n > 1) v ~= n; return v.sort.uniq.array; } void main(string[] args) { int[] P = [1,2,3,4,5]; writeln( prim_factors(10, P).reduce!((r, i) => r*i)() ); }