Существует множество способов выразить идею, что целое число является простым, однако ваша попытка сказать, что целое число N является простым, если в 2..N существует какое-то целое число k, для которого gcd (k, n) = 1 илиgcd (k, n) = n.Легко видеть, что это неверно, поскольку 4 явно составная, но gcd (3,4) = 1. И, конечно, для каждого простого числа N или нет, gcd (N, N) = N.
Я не уверен насчет правил для TLA +, но я быстро прочитал некоторую документацию, и вот моя попытка на IsPrime
isPrime(nb) == \A k in 2..nb-1: ~Divides(k, nb)
или
isPrime(nb) == \A k in 1..nb: Divides(k, nb) => ( (k = 1) \/ (k=nb) )
или, если вы действительнопо какой-то причине хочу работать там с IsGCD
isPrime(nb) == \A k in 1..nb: IsGCD(k, nb, d) => ( (d = 1) \/ (d = nb) )
или
isPrime(nb) == \A k in 2..nb-1: IsGCD(k, nb, d) => (d = 1)