【发布时间】:2016-01-19 20:47:31
【问题描述】:
我正在尝试获取一个函数来确定 N 是否为质数。我是 Python 新手,我知道这可能不是解决这个问题的最有效方法,但这是我的尝试
def is_prime(N):
k = [] #Creates a new list k
for i in range(2,N): #For each i from 2 -> N
r = N%i # r is the remainder of N % i
k.append(r) # appends each remainder r to list k
if (i == N-1): #Once index equals N-1, print list k
print(k)
#For each element j in list k, check if each element in list k is 0
for j in range (len(k)):
if k[j] != 0: <---PROBLEM
return True
else:
return False
print(is_prime(15))
我的逻辑是,当一个数可以被 1 和它自己整除,并且不能被从 2 到 N-1 的任何其他数整除时,它就是质数。在上面的代码中,我在比较列表 k 中每个元素的值时遇到了问题。我想确定每个元素 k[j] == 0 的值。如果每个元素 k[j] != 0 and N%1 == 0 and N%N == 0,则为素数!
关于如何解决这个问题的任何想法?请参阅下面的链接以获取我的代码的可视化! http://goo.gl/IVIRz7
【问题讨论】:
-
如果您在列表中添加可整除的数字,为什么您不在
len列表中尝试条件,为什么要在其中检查? -
@Arman 我不太明白你的意思。我正在检查列表内部,因为我想知道其中每个元素的值是否为 0。
-
看我的回答,你应该只检查列表长度
-
@Arman TypeError: 'float' 对象不能解释为整数。我尝试添加 int(N/2) 但这没有意义。
-
你可以换成
N
标签: python algorithm python-3.x primes