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

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

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

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

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

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

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

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

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

 до 

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

 или 

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

.