Python中的无限while循环(查找素数和GCD)

Python中的无限while循环(查找素数和GCD),python,python-3.x,Python,Python 3.x,我现在被程序中的一个无限循环困住了,我真的不知道它的错误是什么 这是我的密码: from reference import brute_prime, euclid_gcd, extended_euclid def rsa(min_p, min_q, min_e): p = brute_prime(min_p) q = brute_prime(min_q) n = p * q phi = (p - 1) * (q - 1) e_prime = brut

我现在被程序中的一个无限循环困住了,我真的不知道它的错误是什么

这是我的密码:

from reference import brute_prime, euclid_gcd, extended_euclid

def rsa(min_p, min_q, min_e):

    p = brute_prime(min_p)
    q = brute_prime(min_q)

    n = p * q
    phi = (p - 1) * (q - 1)
    e_prime = brute_prime(min_e)

    while euclid_gcd(e_prime, phi) != 1:
        e_prime = brute_prime(min_e)
        print(e_prime)
        e_prime += 1
    return e_prime

    #d = extended_euclid(e_prime, phi)                
    #tup1 = (d, e_prime, n)    
    #return tup1
我的目标是使用brute_素数和euclid_gcd找到e,通过使用brute_素数迭代找到下一个最小的素数e_素数,并测试gcde′,ν=1。如果成功,则终止,如果不成功,则增加e_prime并继续

请注意,我调用的这些函数都是导入的,函数中没有任何错误。怎么了

编辑:

在尝试查看每次迭代的结果时,我尝试了类似的方法

print(rsa(11, 13, 3))
循环每次给我3个

编辑: 这是蛮素

编辑: 这是欧几里得大学


也许不相关,但为什么不做类似的事情呢

e_prime = brute_prime(min_e)
#This loop will not calculate and return me e_prime.
#Instead it just keeps running and exits later with nothing.
while euclid_gcd(e_prime, phi) != 1:
    e_prime = brute_prime(min_e)
    e_prime += 1
return e_prime

RSA函数中的while循环看起来有问题,因为min_e没有被更新,所以在每次迭代中使用相同的值,因此循环被卡住,请检查您的逻辑。 或者使用以下命令:

    while euclid_gcd(e_prime, phi) != 1:
            e_prime = brute_prime(min_e)
            min_e = e_prime + 1 # check for next prime-number co-prime to phi

还要注意,1不是素数。对于1作为输入,brute_prime应该返回2。

而True是典型的无限循环。“从定义上讲,真实永远不会是虚假的……”雅克·戈丁,但我确实在其中添加了一个破绽,对吗?循环永远不会达到中断?什么是欧几里得?这可能需要一段时间来计算。你有没有试过用已知值来判断e_prime是否过高?请发布Clarity的完整代码我在代码中尝试过,但似乎没有。蟒蛇神没有给我一个结果哈哈。。。
e_prime = brute_prime(min_e)
#This loop will not calculate and return me e_prime.
#Instead it just keeps running and exits later with nothing.
while euclid_gcd(e_prime, phi) != 1:
    e_prime = brute_prime(min_e)
    e_prime += 1
return e_prime
    while euclid_gcd(e_prime, phi) != 1:
            e_prime = brute_prime(min_e)
            min_e = e_prime + 1 # check for next prime-number co-prime to phi