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)
Безумовно
Функція, яка знайшла всіх перших 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)