我想使用Python制作Diffie密钥交换代码,但我害怕只是随机选择g。
我读到了托马斯·波宁( Thomas )对这个问题的回答,如何计算Diffie-Hellman的原始根?说,如果你使用一个强素数,那么这个群体中的每一个数字(除了1和p-1)都会有一个p-1或\frac{p-1}{2}的顺序,但我在网上找不到可以使用的大强素数列表。有人知道我在哪里能找到吗?
编辑:感谢fgrieu的慷慨帮助,我意识到我正在寻找安全的素数,而不是强素数。
这个程序生成质数。它工作得很好,但我想加快速度,因为它需要相当长的时间来生成所有的质数
#!/usr/bin/python
#intgr = int(raw_input ("Please enter your number: "))
intgr = 50000
for i in range (2, intgr+1):
j = 2
while j<i:
if (i%j) == 0:
break
j += 1
if j == i:
#print "prime",
我对python世界和一般的编码世界都比较陌生,所以我真的不确定如何优化我的python脚本。我拥有的脚本如下所示:
import math
z = 1
x = 0
while z != 0:
x = x+1
if x == 500:
z = 0
calculated = open('Prime_Numbers.txt', 'r')
readlines = calculated.readlines()
calculated.close()
a = len(readlines)
b = rea
我对编程很陌生。我试着用程序打印第n个素数。守则如下:
##program to print the nth prime number
nreq=input("Enter a number ")
pctr=0 ##counter of the prime numbers
num=2
while pctr!=nreq:
ctr=0 ##counter
i=2
while i<=num:
if num%i==0:
ctr=ctr+1
i=i+1
if ctr==1:
我正在做一个项目,要求我找出极大的数字是否是素数。当然,我读过如何找到素数,并提出了一个非常简单的蛮力方法:
def is_prime_brute_force(p):
if p == 2 or p == 3:
return true
if p == 1 or p % 2 == 0 or any(p % i == 0 for i in range(3, floor_sqrt(p), 2)):
return false
return true
我还研究了一些概率方法,如和Fermat的小定理(关于Rosetta代码对前者的实现,请参阅 )。
这是Project问题#5,这个语句找到了第一个n个自然数最不常见的倍数。例如,1,2的最不常见倍数。10是2520。
我承认我只是在尝试一些随机的东西,我没想到下面这些东西会起作用(用Python编写):
factors = int(input())
factorList = []
for i in range(2, factors+1):
factorList.append(i)
for i in range(len(factorList)-1):
for j in range(2*i+2, len(factorList), i+2):
fact
我刚开始学习python。我在试着写一个打印素数no的程序。但它也打印了no。以5结尾。
n = 2
while n >= 2:
if n == 2:
print(n)
n += 1
while n >= 3:
if n == 3:
print(n)
n += 2
for i in range (3,n):
if n % i != 0:
print(n)
n +=
我有一个非常大的数字,我想做一个程序,找到两个质数,如果相乘,就会得到原始数字。
Ex.
Original_number = 299
// The program should get these two numbers:
q = 13
p = 23
程序一开始运行得很好,但到了某个时刻,它就停止了,我不确定哪里出了问题。代码:
import time
import math
def main():
time1 = time.clock()
q = int(0)
p = int(0)
finalnumber = int(377)
print(
因此,我基本上是一个编程新手,并且一直试图通过完成Project问题来学习Python。我还没走多远,这是我的问题3代码:
13195的素因子为5、7、13和29。数字600851475143中最大的素因子是什么?
虽然我的解决方案有效,但我想知道如何改进。
primes = [2]
factors = []
def isPrime(x):
a = 1
if x == 1:
return False
while a < x:
a += 1
if x % a == 0 and a != x and a != 1:
最近,我读到了一种用Python生成素数列表的非常简洁的方法
#'prime' should be a pre-defined upper bound of the range
filter(lambda prime:all(prime%num for num in range(2,prime)),range(2,prime))
用什么pros和cons来调整它以生成质数?它是Pythonic式的吗?
我个人的想法是它的可读性和简单性,我不确定它是否是一种好的编码方式,我也不确定它的代码是否有效
我有一个Python代码来获得一个数字中最大的素因子,下面是我的代码,当我输入一个8位数的数字时,需要几分钟的时间,但是当我尝试为一个12位数的数字600851475143运行该代码时,它花费了更多的时间,但是它仍然没有给出任何输出或任何错误。那么,有没有办法能快速得到12位数字的输出呢?
def large_prime_fact(num):
prime_factors=[]
if num==2 or num==3:
return(prime_factors.append(num))
if num%2==0:
prime_factors.
我不明白为什么这个节目花了这么长时间:
#!/bin/python
primes=[]
i=0
j=0
k=0
for i in range(2,2000000): #fill in the list
primes.append(i)
i=0
while i<len(primes):
j=primes[i]
print(j)
k=0
while j*(j+k)<primes[len(primes)-1]: ##referred as 'line A'
try:
primes.rem
编写一个python脚本来打印两个给定数字之间的所有素数(这两个值都包括在内),谁能告诉我这里做错了什么吗?
a = int(input("Enter the value of a : "))
b = int(input("Enter the value of b : "))
for k in range(a,b):
for i in range(2,k):
if k%i!=0:
if k!=i:
continue
elif k==i:
Python中的pycrypto库可以生成随机的n位素数。我使用的语法如下:
from Crypto.Util import number
number.getPrime(2048)
上面的函数具有非常令人印象深刻的性能,并以很小的延迟返回素数。What是在此函数中在如此短的时间内生成如此大的素数的过程吗?
我试图更好地掌握Python中的生成器,因为我没有充分使用它们(我认为生成器很酷)。为此,我为素数编写了一个生成器:
def primes():
x = 2
while True:
for y in xrange(2, x/2 + 1):
if x % y == 0:
break
else:
yield x
x = x + 1
这如预期的那样工作,但是如果我使用这个生成器使用列表理解来创建一个素数列表,那么与生成相同列表的筛网函数相比,它真的很慢:
[
我知道python“像泥土一样慢”,但是我想做一个快速高效的程序来找到素数。这就是我所拥有的:
num = 5 #Start at five, 2 and 3 are printed manually and 4 is a multiple of 2
print("2")
print("3")
def isPrime(n):
#It uses the fact that a prime (except 2 and 3) is of form 6k - 1 or 6k + 1 and looks only at diviso
在Python3中,我有这样的赋值,我需要使用多处理在间隔[a,b]中找到素数。
让我们以间隔0、30为例,通过使用3个进程,我有三个间隔:[ai,bi]:[0.10]、[10,20]、[20,30]
这是我的代码:
import multiprocessing
import time
def isprime(num):
if num > 1:
for i in range(2, num):
if (num % i) != 0:
pass
else:
return num
if
这是我的python代码,用于计算小于给定数的质数和。
我还能做些什么来优化它?
import math
primes = [2,] #primes store the prime numbers
for i in xrange(3,20000,2): #i is the test number
x = math.sqrt(i)
isprime = True
for j in primes: #j is the devider. only primes ar
由于我开始掌握Python的诀窍,我开始在projecteuler.net上测试新获得的Python技能。
无论如何,在某种程度上,我做了一个函数,得到一个所有素数的列表,直到一个数字'n‘。
下面是ATM机的外观:
def primes(n):
"""Returns list of all the primes up until the number n."""
# Gather all potential primes in a list.
primes = range(2, n + 1)
# The
现在我已经生成了素数P,它是一个强素数,我怎么能生成一个原始根g呢?
我相信我会为g生成另一个bigInt,然后检查它是否是一个原始根。
这一代很容易,我可以做到这一点,就像我在第一代。
检查,以确保它是一个原始根,让我有点困惑。我需要确保g^q等于g^(( p -1)/2)与1 mod p不一致,是否有一个BigInteger函数来处理这个问题?
维基百科有欧拉理论。但是我不确定哪个是我的a,哪个是我的n,我可以用^phi(N)来表示这个论坛,对吗?
public void getKey() {
debug("Getting key (seed) from user"
我刚刚开始学习python,我正在尝试创建一个简单的函数,它接受一个整数,并返回从2到那个整数的所有素数的列表。
我已经创建了这个函数,但是代码似乎不起作用。我只找到了解决这个问题的更有效(和更复杂)的方法(像这个),但这并不能真正帮助我发现我的错误。
def list_of_primes(n):
primes = []
for y in range (2, n):
for z in range(2, y):
if y % x == 0:
continue
else: