Javascript (E6) 92 96
Ngắn hơn và tuân thủ - sử dụng vỏ spidermonkey để đọc stdin / write stdout (với dấu phẩy và dấu cách). Nó tìm thấy cặp thứ 10000 1260989, 1260991 trong một phút trên PC của tôi
Có thể ngắn hơn bằng cách sử dụng p[n]=o=nthay vì p.push(o=n), do đó mảng p thưa thớt. Nhưng điều đó khá chậm và dù sao tôi cũng sẽ không giành được thời lượng mã.
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)
Để thử trong bảng điều khiển 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)
Bị đánh cắp
Một hàm tìm thấy tất cả các cặp song sinh m đầu tiên (trả về giá trị lớn nhất):
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
}
Thí dụ: 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]
Chỉ cuối cùng:
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
}
Sau đó, lấy 2 dòng đó và thêm 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)