Python 将函数的结果存储为变量
我正试图写一个RSA代码,但我遇到了一个简单的问题。我想将函数的结果存储为变量,在Python中存储两次。这是我的密码Python 将函数的结果存储为变量,python,rsa,Python,Rsa,我正试图写一个RSA代码,但我遇到了一个简单的问题。我想将函数的结果存储为变量,在Python中存储两次。这是我的密码 def random_odd_between(j,k): k1 = (k-1)//2 j1 = j//2 a1 = int(random()*(k1-j1+1))+j1 a = 2*a1 +1 return a # The list of primes less than 10^6 is given by: list_of_primes
def random_odd_between(j,k):
k1 = (k-1)//2
j1 = j//2
a1 = int(random()*(k1-j1+1))+j1
a = 2*a1 +1
return a
# The list of primes less than 10^6 is given by:
list_of_primes = prime_range(1,10^6)
# Write a function to check if given number is prime:
def check_if_prime(n):
prime_flag = 1
for i in list_of_primes:
checker = n%i
if checker != 0:
if (n/i) in ZZ:
prime_flag = 0
break
else:
prime_flag = 0
break
return prime_flag
# Generate random numbers between 6*10^9 and 10^10 until we get a prime.
# Generate two prime numbers between 6*10^9 and 10^10 for p and q
def get_a_prime():
count = 0
prime_found = 0
while prime_found == 0:
a = random_odd_between(6*10^9,10^10)
prime_found = check_if_prime(a)
count = count + 1
# Print a prime you've got:
print '%i' %a
p = get_a_prime()
q = get_a_prime()
n = p*q
# Let t stand for totient
t = (p-1)*(q-1)
我无法定义我的p和q,但他们总是给我一个错误。我意识到我需要执行某种返回操作,但语法不正确只需将
打印“%I”%a
替换为返回a只需将打印“%I”%a
替换为返回a
我相信您的检查prime
和获取prime
函数都有错误。在前者中,ZZ
没有定义,第一个break
应该再缩进一级,最后一个是多余的。更好的是,只要在需要时返回True或False
在第二个函数中,您需要返回prime值,而不仅仅是打印它
def check_if_prime(n):
if n == 2:
return True # 2 is a prime.
if n % 2 == 0 or n <= 1:
return False # Anything less than or equal to one is not prime.
for divisor in xrange(3, int(n ** 0.5) + 1, 2): # 3, 5, 7, ..., int(SQRT(n)) + 1
if not n % divisor:
return False # NOT divisible by the divisor.
return True # Must be prime.
def get_a_prime():
prime_found = False
while not prime_found:
a = random_odd_between(6 * 10 ^ 9, 10 ^ 10)
prime_found = check_if_prime(a)
return a
我相信您的检查如果素数
和获取素数
函数都有错误。在前者中,ZZ
没有定义,第一个break
应该再缩进一级,最后一个是多余的。更好的是,只要在需要时返回True或False
在第二个函数中,您需要返回prime值,而不仅仅是打印它
def check_if_prime(n):
if n == 2:
return True # 2 is a prime.
if n % 2 == 0 or n <= 1:
return False # Anything less than or equal to one is not prime.
for divisor in xrange(3, int(n ** 0.5) + 1, 2): # 3, 5, 7, ..., int(SQRT(n)) + 1
if not n % divisor:
return False # NOT divisible by the divisor.
return True # Must be prime.
def get_a_prime():
prime_found = False
while not prime_found:
a = random_odd_between(6 * 10 ^ 9, 10 ^ 10)
prime_found = check_if_prime(a)
return a
您得到的错误是什么?另外,在get_a_prime
方法中,您没有返回任何内容。您可能希望返回某些内容,以便将其存储在p和q中。照目前情况,上面的一个或多个break
语句嵌套不正确。代码中的ZZ是什么?只需将代码粘贴到PyCharm中,错误就会自动突出显示,您所遇到的问题就更容易解决。我强烈建议您购买PyCharm(非商业学术等免费)或一些。您的错误是什么?另外,在get_a_prime
方法中,您没有返回任何内容。您可能希望返回某些内容,以便将其存储在p和q中。照目前情况,上面的一个或多个break
语句嵌套不正确。代码中的ZZ是什么?只需将代码粘贴到PyCharm中,错误就会自动突出显示,您所遇到的问题就更容易解决。我强烈建议您获取PyCharm(非商业学术等免费)或第50-50行回溯中的一些.Error(最后一次调用):文件“/projects/sage/sage-6.10/local/lib/python2.7/site packages/smc_sagews/sage_server.py”,第947行,在命名空间中的执行执行编译(block+'\n',single'),本地文件,第1行,在文件“”的第5行中,在获取素数文件“”的第4行中,在类型之间的随机奇数错误中:'module'对象不可调用7350行是素数=0@CoriVanderWerf这确实解决了你问题中的问题。您提到的错误是另一个您必须修复的问题。第50-50行回溯中的错误(最后一次调用):文件“/projects/sage/sage-6.10/local/lib/python2.7/site packages/smc_sagews/sage_server.py”,第947行,在命名空间中的执行执行编译(block+“\n”,“single”)、本地文件“”中的第1行、文件“”中的第5行,在get_a_素数文件“”的第4行中,在random_odd_between TypeError中:“module”对象不可调用7350行是素数\u found=0@CoriVanderWerf这确实解决了你问题中的问题。您提到的错误是另一个您必须修复的问题。Python的哪个版本以及错误是什么?这是针对Python2.7的。对于Python3,将xrange
更改为range
.Oops。有些东西错过了我最后的编辑。请参阅上面的轻微修订。Python的哪个版本以及错误是什么?这是针对Python2.7的。对于Python3,将xrange
更改为range
.Oops。有些东西错过了我最后的编辑。请参阅上面的轻微修订。