Additive primes: Difference between revisions

Content added Content deleted
Line 627: Line 627:


def prime?(n) # P3 Prime Generator primality test
def prime?(n) # P3 Prime Generator primality test
return false unless n > 1 && 6.gcd(n % 6) == 1 || [2, 3].includes?(n)
return false unless (n | 1 == 3 if n < 5) || n.gcd(6) == 1
pc = typeof(n).new(5)
sqrt_n = Math.isqrt(n) # For Crystal < 1.2.0 use Math.sqrt(n).to_i
while pc <= Math.isqrt(n) # For Crystal < 1.2.0 use Math.sqrt(n).to_i
p = -1
return false if n % pc == 0 || n % (pc + 2) == 0
while (p += 6) <= sqrt_n
pc += 6
return false if n % p == 0 || n % (p + 2) == 0
end
end
true
true