理解数字的代码在Python中是主要的或正常的

时间:2016-02-21 12:37:02

标签: python

我是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"

出了什么问题?

3 个答案:

答案 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