The Untouchables
Pyth, 21 bytes
.f!fqZsf!%TYStTSh^Z2Q
Warning: Incredibly slow. Test run and timing below.
$ time pyth -c '.f!fqZsf!%TYStTSh^Z2Q' <<< 3
[2, 5, 52]
real 2m46.463s
user 2m46.579s
sys 0m0.004s
It's basically as brute force as possible, tests factorizations up to the potential lonely number squared plus one.
C, 104 bytes
j,i,z,w;u(y){for(z=2;y;z++)for(w=0;(++w<z*z||0&printf("%i ",z)+y--)&&j^z;)for(i=j=0;++i<w;j+=i*!(w%i));}
It will take a few minutes for y > 20, but whatever.
Java, 310 Bytes
class U{int[] p;U(int e){p=new int[(int)4e9];for(int i=1,c=0;c<e;i++)if(u(i)>0){System.out.println(i);c++;}}int p(int n){if(p[n]!=0)return p[n];int i,s=1;for(i=2;i<=n-1;i++)s+=n%i==0?i+(n/i!=i?n/i:0):0;return(p[n]=s);}int u(int n){if(n==1)return 0;for(int i=2;i<=(n-1)*(n-1);i++)if(p(i)==n)return 0;return 1;}}
Golfed as well as I could but, I was more interested in making sure it ran in reasonable time. The unglofed version is probably more interesting
public class Untouchable {
int[] properDivisorSumMap;
public Untouchable(int estimatedMaxium){
properDivisorSumMap = new int[(estimatedMaxium-1)*(estimatedMaxium-1)];
}
public int properDivisorSum(int n){
if(properDivisorSumMap[n] != 0){
return properDivisorSumMap[n];
}
int sum = 1;
for(int i=2;i<=(int)Math.sqrt(n);i++){
if(n%i==0){
sum+=i;
if(n/i != i){
sum+=n/i;
}
}
}
properDivisorSumMap[n] = sum;
return sum;
}
public boolean untouchable(int n){
if(n==1){
return false;
}
for(int i=2;i<=(n-1)*(n-1);i++){
if(properDivisorSum(i) == n){
return false;
}
}
return true;
}
public static void main(String[] args){
Untouchable test = new Untouchable(8480);
int elements = Integer.parseInt(args[0]);
for(int i=1,count=0;count < elements;i++){
if(test.untouchable(i)){
System.out.printf("%4d: %4d%n",count,i);
count++;
}
}
}
}