rendered paste bodyimport java.util.*;public class WeirdNumbers { public static void main(String[] args) { List<Integer> al=new ArrayList<Integer>(); List<Integer> tl=new ArrayList<Integer>(); List<Integer> rl=new ArrayList<Integer>(); HashSet<Integer> spn = new HashSet<Integer>(); int l=2,s=0,c=0,a,n; long rt=System.currentTimeMillis(); l:for(;;l+=2,s=1) { if(spn.contains(l)) continue; al.clear(); for(int i=2;i<Math.sqrt(l);i++) { if(0==l%i) { if(spn.contains(i)||spn.contains(n=l/i)) continue l; al.add(i); al.add(n); s+=i+n; } } if((a=s-l)<=0) continue; if(al.contains(a)) { for(int i=1;i<=2;i++) spn.add(l*i);// spn.add(l); spn.add(2*l); continue; } tl.clear(); al.add(0,1); for(int i:al) if(i<a) tl.add(i); int ta[]=new int[tl.size()]; for(int i=0;i<ta.length;i++) ta[i]=tl.get(i); if(backTrack(ta, 0,a)) { for(int i=1;i<=2;i++) spn.add(l*i);// spn.add(l); spn.add(2*l); continue; } int na[]=new int[al.size()]; for(int i=0;i<na.length;i++) na[i]=al.get(i); if(!backTrack(na,0,l)) { rl.add(l);// System.out.println(++c+":\t"+l); if(1000==++c) break; } } System.out.println(spn.size()+", "+(rl.get(14)+rl.get(24)+rl.get(19))+", "+(System.currentTimeMillis()-rt)+"ms"); } static boolean backTrack(int a[], int k, int n) { if(n == 0) return true; if(k == a.length) return false; if(n >= a[k]) { n -= a[k]; if(backTrack(a,k+1,n)) return true; n += a[k]; } if(backTrack(a,k+1,n)) return true; return false; }}