因此,我是来自java背景的python新手,我很难习惯python的语法、作用域和循环等。这是我的导师提出的一个问题,我不知道我做错了什么
Q.编写一个函数或使用一些if-else语句来计算100到200之间有多少素数
def isPrime(num):
if num > 1:
for i in range(2, num):
if(num % i) == 0:
return True
def primeNumbers():
count = 0
for num in range(100, 200):
prime = isPrime(num)
if prime == True:
count += 1
print(count)
primeNumbers()
基本上你的
isPrime
函数是错误的。当数字可除(即非素数)时,它返回True
,并且从不返回False
。固定版本为:也就是说,您的程序的一个更具Pythonic(和PEP-8兼容)的版本可以是:
您的程序实际上返回的是非素数的计数。
如果数字可以被整除,则
isPrime
函数返回True
由一个介于2和num之间的数字。 该功能应为:或者在
primeNumbers
函数中打印100 - count
你也可以检查一下埃拉托什尼的筛子
在
isPrime(num)
注意}中的每一个{}都是{},那么你可以确信{}是素数
if(num % i) == 0:
检查num
的余数被i
除后是否为0,这意味着您要检查i
是否可被num
除。但是如果这个条件为真,那么num
不是素数,所以你必须return False
。如果这个条件对于{我想指出的一点是,如果
i
是num
的除数,那么num/i
也是一个除数。所以在现实中,您只想检查从2
到sqrt(num)
或num ** 0.5
的范围建议代码:
p/s:正如其他人指出的,您不应该在这个项目中真正使用普通素数测试,而是使用Sieve of Eratosthenes
相关问题 更多 >
编程相关推荐