将整数除以Python中某个范围内的所有数字

时间:2013-11-10 04:34:47

标签: python

我正在尝试编写一个脚本,该脚本将一个整数除以一个范围内的所有数字,并且只有当所有数字都是0位小数时才具有值。

以下是我到目前为止编写的代码:

n = int(input("Please enter a number (more than 0) :"))
count = 0


if n < 1 : print("Please enter a positive number")
else:
    if n%2 == 0 : print("Number is not prime")
    else:

        for i in range(3, int(n**0.5)+1):
                if i % n == 0 :
                    count = count + 1
                    count = count + 0

if count > 1 : print("Number is not prime")
else : print("Number is prime")

打印数字是任何奇数的素数。

为什么这不起作用的任何想法?

感谢。

3 个答案:

答案 0 :(得分:1)

if count > 1 : print("Number is not prime")应为if count >= 1 : print("Number is not prime")。此外,在if n%2 == 0 : print("Number is not prime")中,count应该递增。更好,为什么甚至有if n%2 == 0 : print("Number is not prime")?将for i in range(3, int(n**0.5)+1):中的3更改为2,并且可以删除if语句。

PS count = count + 0什么都不做,所以请将其删除。

答案 1 :(得分:0)

你错了两点 -

        for i in range(3, int(n**0.5)+1):
            if n%i == 0 : # You want to check if n is divisible by i
                count = count + 1
                # No need of count = count + 0 here since it does nothing

if count > 0 : print("Number is not prime") # Prime if count > 0 & not count > 1
else : print("Number is prime")

此外,您可以通过以2为步长运行for循环而不是1来改进代码,即检查n是否可被3到sqrt(n)中的所有奇数整除,而不是从3到3的所有数字SQRT(N)。

for i in range(3, int(n**0.5)+1, 2): # The 3rd argument indicates steps

答案 2 :(得分:0)

inp = int(input("Type a number: "))  

isprime = 'true'                

for x in range(2, inp):
    y = (inp % x)
    if y == 0:
        isprime = 'false'

print(isprime)