1

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

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

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")

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

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

谢谢。

4

3 回答 3

1

if count > 1 : print("Number is not prime")应该是if count >= 1 : print("Number is not prime")。此外, inif n%2 == 0 : print("Number is not prime")count递增。更好的是,为什么还要有if n%2 == 0 : print("Number is not prime")?把3 改成for i in range(3, int(n**0.5)+1):2,那个 if 语句就可以去掉了。

PScount = count + 0什么都不做,所以删除它。

于 2013-11-10T04:42:42.207 回答
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")

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

for i in range(3, int(n**0.5)+1, 2): # The 3rd argument indicates steps
于 2013-11-10T04:46:20.423 回答
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)
于 2019-09-29T10:46:41.190 回答