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)