为什么此 python 代码会出现运行时错误?
Why does this python code gives runtime error?
def isPrime(n):
for i in range(2,math.sqrt(n)):
if n%i ==0 :
return False
return True
#limits calculated using prime number theory by hand
primes=[]
for num in range(104319,114319):
if isPrime(num):
primes.append(num)
我正在使用 Ideone。
这是错误
Runtime error time: 0.03 memory: 9984 signal:-1
Traceback (most recent call last): File "./prog.py", line 13, in
File "./prog.py", line 2, in isPrime NameError: name 'math'
is not defined
math.sqrt
returns 一个浮动对象,但是 range
需要一个 int
对象。你应该做
def isPrime(n):
for i in range(2,int(math.sqrt(n))+1): #Convert the result of math.sqrt to int
if n%i ==0 :
return False
return True
编辑:编辑后"NameError: name 'math' is not defined",您应该在开始时导入数学
import math
def isPrime(n):
#...
在代码的顶部,您需要像这样导入要调用的模块
import math
它给你那个错误,因为你忘记导入 math
。但是,即使您这样做了,您仍然会遇到错误,因为 range()
需要一个整数参数,而 math.sqrt()
returns 需要一个 float
。此外,您需要比平方根高一个,因为 range()
的第二个参数是独占的。你可以这样做:
import math
def isPrime(n):
for i in range(2, int(math.sqrt(n)) + 1):
if n%i == 0:
return False
return True
#limits calculated using prime number theory by hand
primes=[]
for num in range(104319,114319):
if isPrime(num):
primes.append(num)
以下应该修复您的代码。
import math
def isprime(n):
for i in range(2, int(math.sqrt(n))):
if n%i == 0:
return False
else:
return True
def isPrime(n):
for i in range(2,math.sqrt(n)):
if n%i ==0 :
return False
return True
#limits calculated using prime number theory by hand
primes=[]
for num in range(104319,114319):
if isPrime(num):
primes.append(num)
我正在使用 Ideone。
这是错误
Runtime error time: 0.03 memory: 9984 signal:-1
Traceback (most recent call last): File "./prog.py", line 13, in File "./prog.py", line 2, in isPrime NameError: name 'math' is not defined
math.sqrt
returns 一个浮动对象,但是 range
需要一个 int
对象。你应该做
def isPrime(n):
for i in range(2,int(math.sqrt(n))+1): #Convert the result of math.sqrt to int
if n%i ==0 :
return False
return True
编辑:编辑后"NameError: name 'math' is not defined",您应该在开始时导入数学
import math
def isPrime(n):
#...
在代码的顶部,您需要像这样导入要调用的模块
import math
它给你那个错误,因为你忘记导入 math
。但是,即使您这样做了,您仍然会遇到错误,因为 range()
需要一个整数参数,而 math.sqrt()
returns 需要一个 float
。此外,您需要比平方根高一个,因为 range()
的第二个参数是独占的。你可以这样做:
import math
def isPrime(n):
for i in range(2, int(math.sqrt(n)) + 1):
if n%i == 0:
return False
return True
#limits calculated using prime number theory by hand
primes=[]
for num in range(104319,114319):
if isPrime(num):
primes.append(num)
以下应该修复您的代码。
import math
def isprime(n):
for i in range(2, int(math.sqrt(n))):
if n%i == 0:
return False
else:
return True