本人初学python,看到有人写了一个素数的检测脚本,但是只定义了函数,所以想要补全它,结果写出的代码老是报错,改了好几次好像都不太对,所以希望有人能帮忙改正。 这个是我的代码:
n = input('请任意输入一个自然数') def PrimeND(): for i in range(2,n): if (n % i == 0): print ('您输入的是合数') else: print ('您输入的是素数') s = PrimeND() if n == 0 and 1 : print ('0和1既不是素数也不是合数') else: print (s)
我在我的机器上,执行到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)######
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()语法对了 但求素数的算法不对吧 ######算法不对的
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。