Javascript (E6) 92 96
Короче и соответствует - используйте оболочку spidermonkey для чтения stdin / write stdout (с запятой и пробелом). Он находит 10000-ую пару 1260989, 1260991 менее чем за минуту на моем ПК.
Можно было бы использовать p[n]=o=n
вместо нее меньше p.push(o=n)
, чтобы массив p был редким. Но это довольно медленно, и я не собираюсь выигрывать за длину кода в любом случае.
m=readline();for(n=3,o=p=[];m;n+=2)p.every(e=>n%e)&&(m-=n-o<3,p.push(o=n));print(o-2+', '+o)
Чтобы попробовать в консоли Firefox:
m=prompt();for(n=3,o=p=[];m;n+=2)p.every(e=>n%e)&&(m-=n-o<3,p.push(o=n));alert(o-2+', '+o)
Ungolfed
Функция, которая нашла все первые m близнецов (возвращает наибольшее значение):
T=m=>{
for (o=n=3, p=[2], t=[]; !t[m-1]; n+=2)
p.every(e => n%e) && (n-o-2 ? 0 : t.push(n), p.push(o=n))
return t
}
Пример: console.log(T(50))
[5, 7, 13, 19, 31, 43, 61, 73, 103, 109, 139, 151, 181, 193, 199, 229, 241, 271, 283, 313, 349, 421, 433, 463, 523, 571, 601, 619, 643, 661, 811, 823, 829, 859, 883, 1021, 1033, 1051, 1063, 1093, 1153, 1231, 1279, 1291, 1303, 1321, 1429, 1453, 1483, 1489]
Просто последнее:
L=m=>{
for (o=n=3,p=[2]; m; n+=2)
p.every(e => n%e) && (m -= n-o==2, p.push(o=n))
return o
}
Затем возьмите эти 2 строки и добавьте IO
m = prompt()
for (o=n=3, p=[2]; m; n+=2)
p.every(e => n%e) && (m -= n-o==2, p.push(o=n))
alert('o-2+', '+o)