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