Soul FriendНу и почему Вы решили что
gcd() не работает? Они очень даже работают, просто в проверяемом интервале нет близнецов имеющих наименьший простой делитель больше чем

.
Например в интервале

все числа (и близнецы и нет, и простые и составные) имеют делители не превосходящие

, что делает их
не взаимно простыми с

.
Т.е. Вы просто что-то не то посчитали, а
gcd() работают как надо.
Отдельный вопрос что уже для

Вы пытаетесь считать

и
floor ругается на точность вычислений с плавающей точкой (38 знаков не хватает для правильного округления). Потому
prodeuler мне и не нравится и предпочитаю праймориалы считать руками (
p=1;forprime(i=1,x,p*=i);), так хотя бы сразу гарантированно выдаётся целое число, пусть даже и огроменное.
Ну что вместо
for и
prime стоит пользоваться специализированными
forprime и
forstep (нечётные

гарантированно не подходят), а также выносить из цикла вычисления не зависящие от переменной цикла (например праймориала или

идя переменной цикла сразу от

до

) — дело ваше конечно, хотите лишних тормозов и вероятности ошибок/опечаток, их и получите.
-- 31.03.2021, 15:27 --Думаю Вы взяли не тот праймориал, надо было или

или

(в данном случае без разницы, но первый разумеется лучше так как числа меньше), но никак не

.