我是Python的新手,并编写此代码以识别数字是否为素数。 我编写了一个在JavaScript和Visual Basic中工作的代码,但在Python中没有用,它的错误是: TypeError:需要浮点数。 我的代码:
import math
a = raw_input("Enter a number:")
k = 0
i = 1
s = math.sqrt(a)
while i <= s:
if a % i == 0:
k += 1
i += 1
if k == 2:
print "prime num"
else:
print "normal num"
出了什么问题?
答案 0 :(得分:3)
只需将用户输入转换为int
即可。
a = int(raw_input("Enter a number:"))
您错误地想要找到类型为string
(文本)的值的平方根。
答案 1 :(得分:1)
您的代码中存在更多问题:while
循环仅取决于给定数字的平方根,但您为k == 2打印prime num
。在这段代码中,只有一个除数,它是1。
更重要的是,你可以从i=2
开始,因此素数会有0个除数。在那之后,最后一个问题是1不是素数。所以代码看起来像这样:
import math
a = int(raw_input("Enter a number:"))
k = 0
i = 2
s = math.sqrt(a)
#print(s)
while i <= s:
if a % i == 0:
k += 1
i += 1
#print(k)
if k == 0 and a > 1:
print "prime num"
else:
print "normal num"
答案 2 :(得分:-1)
首先检查python的版本,如果您使用的是python3,则只需
a=input("enter number")
raw_input适用于python2