def PRIME ( k , p ) :
"""
p is odd
see ed. 3, p. 401
"""
_1 = p - 1
for i in range( k ) :
a = randint( 1 , _1 )
if power_mod( a , _1 , p ) != 1 : return False
s = _1
while not s & 1 :
x = power_mod( a , s , p )
if x != 1 :
if x != _1 : return False
break
s //= 2
return True