我正在尝试解决spoj.com中的主要生成器问题PRIME1但是遇到运行时错误(NZEC)。问题需要采取一些测试用例,对于每个测试用例,它需要为每个不同的测试用例输入一行中的两个数字,然后最终将输出打印为每个数字范围内的素数 错误是运行时错误时间:0.01内存:7736信号:-1
# your code goes here
def is_prime(x):
if x<2:
return False
if x==2:
return True
for y in range(2,x):
if x%y==0:
return False
return True
t=int(raw_input())
mylist=[]
for i in range(0,t):
a=raw_input()
a=a.split(' ')
mylist.append(int(a[0]))
mylist.append(int(a[1]))
k=0
while k<len(mylist):
c=mylist[k]
k+=1
d=mylist[k]
k+=1
for z in range(c,d+1):
if is_prime(z):
print z
print
答案 0 :(得分:1)
在python 2.7.9上运行时,我发现t
中只有{1}}使用range(0, t)
,但t
是字符串,因为我们{{1}方法读取输入并返回字符串。用Python的说法提出这个问题。要删除它,我们应该输入cast我们得到的输入。比如,t = raw_input()
。
这将导致t为整数。
有关raw_input()的信息,请访问:https://docs.python.org/2/library/functions.html#raw_input
为了在python中读取整数,你可以在stackoverflow上关注this帖子。
答案 1 :(得分:0)
您的问题是raw_input()
返回字符串,而不是整数。但您尝试直接在range()
函数中使用它 - for i in range(0,t)
。 range()
函数只接受整数作为参数,因此您需要在输入范围之前将输入转换为int
。
t=int(raw_input())