我正在创建一个Python程序来确定一个数字是否为质数。这就是我所拥有的:
print("Please enter your number:")
number = int(input())
if number > 2:
for i in range (2,number):
if (number % i) == 0:
print(number, "is not prime")
break
else:
print(number, "
我在Julia中的代码,几乎和Python代码(见下文)相同,运行在4.6 s中,Python版本运行在2.4 S中,显然还有很多改进的余地。
function Problem12()
#=
The sequence of triangle numbers is generated by adding the natural
numbers. So the 7th triangle number would be:
1 + 2 + 3 + 4 + 5 + 6 + 7 = 28.
The first ten terms would be:
1,
我对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
我在python中找到了一个示例代码,它向n提供所有素数,但我就是不明白,为什么它会这样做呢?
我读过维基百科关于的文章,但根本不知道它是如何工作的。
pp = 2
ps = [pp]
lim = raw_input("Generate prime numbers up to what number? : ")
while pp < int(lim):
pp += 1
for a in ps:
if pp%a==0:
break
else:
ps.append(pp)
pr
我想使用Python制作Diffie密钥交换代码,但我害怕只是随机选择g。
我读到了托马斯·波宁( Thomas )对这个问题的回答,如何计算Diffie-Hellman的原始根?说,如果你使用一个强素数,那么这个群体中的每一个数字(除了1和p-1)都会有一个p-1或\frac{p-1}{2}的顺序,但我在网上找不到可以使用的大强素数列表。有人知道我在哪里能找到吗?
编辑:感谢fgrieu的慷慨帮助,我意识到我正在寻找安全的素数,而不是强素数。
我似乎不明白为什么我的python代码告诉我错误的carmichael数字。提前谢谢。我只是看不到算法中的错误。
def isCarmichaelNumber( x ):
for y in range(2,x):
#check if prime
if math.gcd (x, y) == 1:
if pow(y, x-1, x) != 1:
return False
return True
print(isCarmichaelNumber(1847))
因此,我基本上是一个编程新手,并且一直试图通过完成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中的素数,它工作得很好,直到输入奇数完美方格,如9,25,121等。它的结果是这些是素数。那么问题是什么呢?
def isPrime(a):
nums = range(2,a)
for num in nums:
if (a % num) == 0:
return False
else:
return True
print('Enter an integer to check if it is prime')
a = input()
a = int(a)
if isPrime(a)
我试图在python中制作这个无限的生成器:
import math
def all_primes():
count = 2
while True:
flag = True
for x in range(2, int(math.sqrt(count) + 1)):
if count % x == 0:
flag = False
if flag:
yield count
else:
count
Python中的pycrypto库可以生成随机的n位素数。我使用的语法如下:
from Crypto.Util import number
number.getPrime(2048)
上面的函数具有非常令人印象深刻的性能,并以很小的延迟返回素数。What是在此函数中在如此短的时间内生成如此大的素数的过程吗?
所以我有两个问题要做家庭作业,第二个问题我被困住了。
使用Python集理解(Python的等效Set符号)生成一组小于100的素数。回想一下,素数是一个大于1且不可被除它本身和1以外的任何整数整除的整数。将您的素数存储在一个变量中(对于其他部分,您将需要它)。输出一组素数(例如,使用打印函数)。
使用Python集理解来生成一组有序对(长度为2的元组),它由素数小于100的所有素数对组成。素数对是一对连续的奇数,都是素数。将一组质数对存储在一个变量中。你的第一组会很有用的。输出一组素数对。
对于第一个问题,这是非常有效的:
r= {x for x in range(2, 10
在过去的一周半的时间里,我一直在尝试用Python for RSA加密来生成大质数,但没有成功。费马质数测试在512比特的规模上是不可行的,我也不能完全理解米勒-拉宾。(我13岁)所有的在线脚本似乎都适用于我正在使用的Python版本以下的版本。我应该怎么做才能生成大量的素数?(是的,概率素数是可以的。)
我是一名数学学生,目前正在学习一个叫做计算数学的模块。作为作业的一部分,我必须研究Goldbach对第一个10,000个数字的猜测,即Python。我用Eratosthenes的筛子得到了10000的素数(不包括1和2):
def sieve(highest_prime):
primes=list(range(2,highest_prime+1))
for i in primes:
j=2
while i*j<=primes[-1]:
if i*j in primes:
primes.
我一直在做一些Project问题来学习/实践Lua,而我最初寻找n最大素因子的快速和肮脏的方法非常糟糕,所以我查找了一些代码来查看其他代码是如何做到的(试图理解不同的分解方法)。
我遇到了以下情况(最初使用Python --这是我的Lua):
function Main()
local n = 102
local i = 2
while i^2 < n do
while n%i==0 do n = n / i end
i = i+1
end
print(n)
end
这一因素在非常短的时间内产生了巨大的数字--几乎是
我编写了一个python代码:
from math import *
limit = 100000
primes = [2]
for i in range(3, limit+1, 2):
is_prime = True
for j in range(3, floor(sqrt(i)), 2):
if i % j == 0:
is_prime = False
break
if is_prime: primes.append(i)
print(len(primes))
它说有9676个素数小于10万,而应
我的代码: import math
n=int(input('Enter the number'))
b=list(range(2,n+1))
for i in range(2,int(math.sqrt(n))+1):
for j in b:
if j!=i and j%i==0:
b[b.index(j)]=0
b={i for i in b if not i==0}
c={i for i in b if n%i==False}
print(b)
print(c) 这一次,我以自己的方式实现了筛子。为什么它不适用于数字为6
在我的查找素数的程序中,即使用户输入素数,也只会显示else语句。我的if there语句有问题吗?还是在某个数学运算符里?我试图通过python语法正确地缩进它。请改正密码。
num=int(input("enter a number : "))
ctr=0
i=1
for i in range(1,num):
if(num%i==0):
ctr+=1
if(ctr==2):
print(num," is prime")
else:
我正在尝试解决上的第50个问题。不要给我答案,也不要帮我解决它,只需要尝试回答这个特定的问题。
目标是找出连续素数的最长和,使其与低于一百万的素数相加。我写了一个筛子来找出n以下的所有素数,并且我已经确认它是正确的。接下来,我将使用以下方法检查连续素数的每个子集的和:
我有一个空的列表sums。对于每个质数,我将它添加到sums中的每个元素中,并检查新的和,然后将质数附加到sums。
这是python语言。
primes = allPrimesBelow(1000000)
sums = []
for p in primes:
for i in range(len(sums)):
我对编程很陌生。我试着用程序打印第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:
我知道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
我大约3天前写了这个python代码,我被困在这里,我认为它可能会更好,但我不知道如何改进它。你们能帮帮我吗?
# Function
def is_prime(n):
if n == 2 or n == 3:
return True
for d in range(3, int(n**0.5), 2):
if n % d == 0:
return False
return True
我是Python新手,我想要创建一个算法,给出输入的主要因素列表的输出,例如:
Input: factorise(684)
Output: 2 x 2 x 3 x 3 x 19
或者其他类似的东西
首先,我需要定义一个素数,这样算法就可以知道它何时找到了素数,因此遵循这样的函数:
num = 13
if num > 1:
for i in range(2, num//2):
if (num % i) == 0:
print(num, "is not a prime number")
break
else:
因此,我决定在这个周末学习python,并从我默认的hello world开始,它是主求解器。这段代码不应该工作...但无论出于什么原因(对于数字5或更高)。
#!/usr/bin/python
a = 2
while a < 65535:
c = 0
a = a + 1
b = 2
while b != a:
if a % b == 0:
#print a, "is not prime. LCD is ", b
break
b = b + 1
if
Python程序将素数列表打印到给定的限制,但问题是它必须跳过一个步骤来打印它们。这意味着到20岁的素数是: 2,3,5,7,11,13,17,19
但是我必须通过跳过一个数字来打印:2,5,11,17
但是使用python生成器函数:我已经编写了下面的代码,但是,我想问一下,还有其他方法吗,或者我可以进一步优化它。
def prime(n):
lst = []
newlist = []
if n == 1:
pass
for i in range(2,n):
for j in range(2,i//2+1):
为了获得实践经验,我正在尝试解决中的问题。链接中的问题要求找到给定2个数字之间的所有质数。那么我是如何用python2.7实现这一点的呢?
# printing all prime numbers between given two inputs
import math
def findPrimes(num1,num2):
for num in range(num1,num2+1):
isPrime=True
for i in range(2,int(math.sqrt(num))+1):
if num%i==0:
Python 3.4下面的程序是一个简单的Eratosthenes筛子:
from itertools import *
def excl(ns,pr):
return (i for i in ns if i%pr)
def sieve(ns):
while True:
pr=next(ns)
yield pr
ns=excl(ns,pr)
# ns=(i for i in ns if i%pr)
r=list(islice(sieve(count(2)),10))
它产生2,3,5,7,11,13,17,19,2