https://www.codewars.com/kata/k-primes/train/javajava
//https://www.codewars.com/kata/k-primes/train/java import java.util.*; public class KPrimes{ public static int primeDecomp2(long n, int k){ int count = 0; for(int i=2; i*i<=n;){ if(n % i == 0){ n /= i; count++; if(count > k){ return -1; } }else{ i++; } } return count; } public static Long[] countKprimes2(int k, long start, long end){ List<Long> list = new ArrayList<Long>(); for(long i=start; i<=end; i++){ if(k == KPrimes.primeDecomp2(i,k)){ list.add(i); } } return list.toArray(new Long[0]); } public static long[] countKprimes(int k, long start, long end){ List<Long> list = new ArrayList<Long>(); for(long i=start; i<=end; i++){ if(k == KPrimes.primeDecomp2(i,k)){ list.add()i; } } long[] result = new long[list.size()]; for(int i=0; i<list.size();i++){ result[i] = list.get(i); } return result; } public static int puzzle(int s){ List<Long> list1p = Arrays.asList(KPrimes.countKprimes2(1,2,s)); List<Long> list2p = Arrays.asList(KPrimes.countKprimes2(3,8,s)); List<Long> list3p = Arrays.asList(KPrimes.countKprimes2(7,128,s)); int count = 0; for(int i=0; i<list3p.size(); i++){ for(int j=0; j<list2p.size(); j++){ long sum = list3p.get(i) + list2p.get(j); if(sum < s && list1p.contains(s - sum)){ count++; } } } return count; } }
The following might be of help:.net