Perl, 173
Biarkan saya menambahkan solusi lain yang tidak berguna. Solusi ini sangat lambat sehingga bahkan tidak bisa menghasilkan apa pun melewati angka ganjil pertama. Saya berani mengatakan itu adalah yang paling lambat dari semua solusi di sini.
$n=<>;$i=2;while($n){$b=qr/^(?=(.+)\1{2}$)((.+)(?=.*(?(2)(?=\2$)\3.+$|(?=\1$)\3.+$))(?=.*(?=\1$)\3+$))+/;$_='x'x3x$i;if(/$b/&&($+[0]>$i)&&!/$b\1{2}$/){print"$i\n";$n--}$i++}
Demo
Kode yang sama ditulis dalam Java (yang saya lebih nyaman dengan) bahkan tidak dapat mengenali nomor aneh ke-2 (836), dan saya sudah memberi makan nomor langsung ke metode pemeriksaan (alih-alih perulangan dan memeriksa setiap nomor).
Inti dari solusi ini terletak pada regex:
^(?=(.+)\1{2}$)((.+)(?=.*(?(2)(?=\2$)\3.+$|(?=\1$)\3.+$))(?=.*(?=\1$)\3+$))+
Dan bagaimana string diatur menjadi 3 kali angka yang kita periksa.
Panjang string diatur menjadi 3 kali angka yang kami periksa i: 2 pertama iuntuk mencocokkan jumlah faktor dan 1 terakhir idicadangkan untuk memeriksa apakah angka merupakan faktor i.
(?=(.+)\1{2}$) digunakan untuk menangkap nomor yang kami periksa.
((.+)(?=.*(?(2)(?=\2$)\3.+$|(?=\1$)\3.+$))(?=.*(?=\1$)\3+$))+cocok dengan faktor-faktor nomor. Nanti iterasi akan cocok dengan faktor yang lebih kecil dari iterasi sebelumnya.
- Kita dapat melihat bahwa 2 bagian ini
(.+)dan (?=.*(?=\1$)\3+$)bersama - sama memilih faktor jumlah yang diperiksa.
(?=.*(?(2)(?=\2$)\3.+$|(?=\1$)\3.+$)) memastikan bahwa faktor yang dipilih lebih kecil dari jumlah yang diperiksa dalam iterasi pertama, dan lebih kecil dari faktor sebelumnya dalam iterasi berikutnya.
Regex mencoba untuk mencocokkan sebanyak mungkin faktor angka yang ada dalam batas 2 i. Tapi kami tidak peduli tentang nilai sebenarnya dari jumlah pembagi, kami hanya peduli apakah jumlahnya banyak.
Kemudian regex ke-2, yang merupakan regex pertama dengan \1{2}$ditambahkan. Akibatnya, regex memastikan jumlah (beberapa) faktor dari jumlah yang diperiksa sama dengan jumlah itu sendiri:
^(?=(.+)\1{2}$)((.+)(?=.*(?(2)(?=\2$)\3.+$|(?=\1$)\3.+$))(?=.*(?=\1$)\3+$))+\1{2}$
Batasan yang ditambahkan akan menyebabkan mesin regex melakukan penelusuran mundur pada semua subset faktor yang mungkin, sehingga akan sangat lambat.