Python:从列表创建一系列数字
Python: creating a range of numbers from a list
我是编码新手,我正在尝试编写一个有点通用的素数程序。与我的不同之处在于,我希望我的程序更高效,只检查等于并包括被检查数字的平方根的数字,我只希望它检查以前找到的素数。到目前为止,我只达到了第一个标准。
from numpy import sqrt, ceil
for a in range (3, 10000):
k=0
b=ceil(sqrt(a))
for i in range(2, int(b))
if (a%i==0):
k=k+1
if(k<=0):
print(a)
我认为我需要创建一个包含数字 2 的列表,运行 程序,并将打印的任何质数附加到列表中。但是,我不知道如何:
1.) 确保只选中上述列表中的数字。
2.) 确保只检查通过 sqrt(a) 的数字。
感谢任何指导
您想记住已找到的素数,因此将它们存储在列表中而不是仅仅打印它们。您提到在找到素数时附加素数;使用 primes.append(new_prime)
。使用 break
一旦你找到一个因素或一旦你通过平方根跳到下一次迭代。
primes = [2]
for tested_number in range(3, 10000, 2): #skip the evens
is_prime = True # if this is still true after testing, number is prime
for prime in primes:
if tested_number%prime == 0:
is_prime = False
break
elif prime>sqrt(tested_number): # no need to check these primes
break
if is_prime:
primes.append(tested_number)
我是编码新手,我正在尝试编写一个有点通用的素数程序。与我的不同之处在于,我希望我的程序更高效,只检查等于并包括被检查数字的平方根的数字,我只希望它检查以前找到的素数。到目前为止,我只达到了第一个标准。
from numpy import sqrt, ceil
for a in range (3, 10000):
k=0
b=ceil(sqrt(a))
for i in range(2, int(b))
if (a%i==0):
k=k+1
if(k<=0):
print(a)
我认为我需要创建一个包含数字 2 的列表,运行 程序,并将打印的任何质数附加到列表中。但是,我不知道如何:
1.) 确保只选中上述列表中的数字。
2.) 确保只检查通过 sqrt(a) 的数字。
感谢任何指导
您想记住已找到的素数,因此将它们存储在列表中而不是仅仅打印它们。您提到在找到素数时附加素数;使用 primes.append(new_prime)
。使用 break
一旦你找到一个因素或一旦你通过平方根跳到下一次迭代。
primes = [2]
for tested_number in range(3, 10000, 2): #skip the evens
is_prime = True # if this is still true after testing, number is prime
for prime in primes:
if tested_number%prime == 0:
is_prime = False
break
elif prime>sqrt(tested_number): # no need to check these primes
break
if is_prime:
primes.append(tested_number)