def es_primo(n):
	if n <= 2:
		return True # Considero el 1 primo por cuestiones de programacion
	elif n&1 == 0: # Par
		return False
	else:
		return test_primalidad_miller_rabin(n,20)
def resultado_test_primalidad(p, n):
	if test_primalidad_miller_rabin(p, n):
		return str(p) + " es probable primo, probabilidad " + str( 1.0 - 1./(4.**n))
	else: 
		return str(p) + " no es primo"
n, p  = 0, 0 

if opcion == 1:
	p = int(raw_input("Introduce p: "))
	n = int(raw_input("Introduce n: "))
elif opcion == 2:
	c = int(raw_input("Introduce c: "))
	n = int(raw_input("Introduce n: "))
	p = 2
	while(p&1 != 1):
		p = random.randint(10**(c-1),10**c)
elif opcion == 3:
	p = int(raw_input("Introduce p: "))
	h = float(raw_input("Introduce h: ")) 
	n = int(math.ceil(math.log(1./(1.-h),4)))
	print n
elif opcion == 4:
	n = int(raw_input("Introduce n: "))
	primo = False
	while primo == False: 
		p = random.randint(10**(n-1), 10**n )
		if p&1 == 0:
			continue # evito números pares
		if test_primalidad_miller_rabin(p,10): # 0.999999 probabilidad de ser primo
			primo = True
	n = 10
else:
	print "Opción no válida"
	exit()

print "\n", resultado_test_primalidad(p,n)