为什么这个python代码会给出运行时错误?

时间:2016-02-16 19:27:01

标签: python runtime-error primes

git add /Source/Foundation Assemblies/

我正在使用Ideone。

这是错误

  

运行时错误时间:0.03内存:9984信号:-1

     

回溯(最近一次呼叫最后一次):文件" ./ prog.py",第13行,在      文件" ./ prog.py",第2行,inPrime NameError:name' math'   未定义

4 个答案:

答案 0 :(得分:2)

它会为您提供该错误,因为您忘记导入math。但是,即使您这样做,仍会出现错误,因为range()需要一个整数参数,而math.sqrt()会返回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)

答案 1 :(得分:1)

math.sqrt返回一个float对象,但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'未定义”后,你应该在开头导入数学

import math

def isPrime(n):
#...

答案 2 :(得分:0)

在代码的顶部,您需要导入您正在调用的模块

import math

答案 3 :(得分:0)

以下内容应修复您的代码。

span