Prime代码不起作用

时间:2016-08-29 16:44:38

标签: python primes

我正在尝试学习一些代码,并找到了python。我只是一个初学者,但对编程语言感兴趣。

我在编写第一个程序时遇到了一些麻烦。我正在尝试制作一个程序,要求用户输入一个数字,然后检查该数字是否为素数,如果是,则将其添加到素数列表中。

这是我的代码。

prime = [2,3,5,7]
get = int(input("what number do you want to check ? "))

a = 0
while a < len(prime):
        print("Test " + str(a+1))
        test = (get / prime[a])
        if isinstance(test, int):
            print(str(get) + " is not a prime number" )
            break
        else:
            a += 1

else:
    prime.extend(get)
    print(str(get) + " is a prime number, prime number added to list"

2 个答案:

答案 0 :(得分:2)

prime.extend(get)

extend用于向列表添加列表。如果您只想添加单个值,请使用append

prime.append(get)

答案 1 :(得分:1)

考虑到你设置它的方式,你会得到26是一个素数。因为它只能被13整除,并且13还没有在表中,所以它会在一段时间内掉落。你需要找到少于你要求填充表格的数量的所有素数,或者设置程序找到前n个素数。

我注意到if上的else是错误的缩进。

你应该在if和not division上使用模运算符,因为我得到整数除法而不是浮点。

我将修复程序放在下面的代码中。

请注意,问题是您在使用追加时使用的是扩展名。

append vs. extend

append:在最后添加对象。

x = [1, 2, 3]
x.append([4, 5])
print (x)

为您提供:[1, 2, 3, [4, 5]]

extend:通过附加迭代中的元素来扩展列表。

x = [1, 2, 3]
x.extend([4, 5])
print (x)

为您提供:[1, 2, 3, 4, 5]

以下是使用modulo进行测试而不是除法的代码。这显示了正确的情况。请注意,在进行除法并获得浮点结果时,isinstance()可能无法给出正确的答案。有许多消息来源建议不要将其用作测试。

如果您使用的是Python 3.0,那么您将得到一个浮点响应,而不是一个int答案。见Python integer division yields float

prime = [2,3,5,7]
get = int(input("what number do you want to check ? "))    
a = 0
while a < len(prime):
        print("Test " + str(a+1))
        if (get % prime[a]) == 0:
            # Number was evenly divisible by a prime number
            print(str(get) + " is not a prime number" )
            break
        else:
            a += 1                
else:
    # Number was not evenly divisible by primes already in table
    prime.append(get)
    print(str(get) + " is a prime number, prime number added to list"