我在我的机器上,执行到s = PrimeND()这块是没有错误的。我用的是Python2.7.2, 但你的错误提示,应该是类型转换的问题,查查这块吧。######而且,你写的程序,好像有问题,如果你是想判断你输入的数是个什么 类型的数的话。
######
IDLE 2.6.6 ==== No Subprocess ==== >>> def isprime(n): flag = 1 for i in xrange(2,int(n**0.5)+1): if n%i==0: flag = 0 break return flag==1 and 'prime' or 'Not prime'
>>> isprime(3) 'prime' >>> isprime(45) 'Not prime' >>> isprime(50) 'Not prime' >>> isprime(2) 'prime' >>> isprime(17) 'prime' >>>
######PrimeND方法连个返回值都没有。 所以看不懂:s = PrimeND() ######没有进行类型转换,需要 n = int(n)######
引用来自“oschina的ID”的答案
没有进行类型转换,需要 n = int(n)
+1 ######
n = input('请任意输入一个自然数')
n = int(n)
def PrimeND():
for i in range(2,n):
if (n % i == 0):
print ('您输入的是合数')
else:
print ('您输入的是素数')
if n == 0 and 1 :
print ('0和1既不是素数也不是合数')
else:
PrimeND() 语法对了 但求素数的算法不对吧 ######算法不对的