Python 2.7 倒计时和质数检查
我试着写一个函数,如果一个人插入一个值,它会倒计时到0,并显示每个数字是否为素数Python 2.7 倒计时和质数检查,python-2.7,Python 2.7,我试着写一个函数,如果一个人插入一个值,它会倒计时到0,并显示每个数字是否为素数 def pn(n): while n > 0: #print (n) if n == 1: print '1 is a special number' elif n == 2: print '2 is EVEN and PRIME number' else:
def pn(n):
while n > 0:
#print (n)
if n == 1:
print '1 is a special number'
elif n == 2:
print '2 is EVEN and PRIME number'
else:
v_rem = n%2
v_half = int(n/2)
if v_rem == 0:
print n, ' is EVEN number'
elif v_rem == 1:
print n, ' is ODD number'
i = 2
v_is_prime = "y"
while i <= v_half:
v_prim_rem=n%i
if v_prim_rem == 0:
print n, ' is not a prime number'
v_is_prime = "n"
break
i = i + 1
if v_is_prime == "y":
print n, 'is a prime number'
n = n-1
您的担忧可能与不正确的输出有关:
10 is EVEN number
9 is ODD number
9 is a prime number # here
9 is not a prime number
8 is EVEN number
7 is ODD number
7 is a prime number
7 is a prime number # and here
6 is EVEN number
5 is ODD number
5 is a prime number
4 is EVEN number
3 is ODD number
2 is EVEN and PRIME number
1 is a special number
缩进错误:v_is_prime的检查应该在v_half上的循环之外,因此应该在一个步骤中确定:
v_is_prime = "y"
while i <= v_half:
v_prim_rem=n%i
if v_prim_rem == 0:
print n, ' is not a prime number'
v_is_prime = "n"
break
i = i + 1
if v_is_prime == "y":
print n, 'is a prime number'
但是,如果可以使用for循环,则不要使用while循环:
及
您还可以采用字符串格式:
print "{0} is a prime number".format(n)
最后,此问题非常适合以下情况:
请正确缩进代码,因为它决定了Python中的程序流。另一方面,你忘了问问题。
for n in range(n, 0, -1):
...
for i in range(int(n/2)):
...
else:
...
print "{0} is a prime number".format(n)
def pn(n):
primes = range(n+1)
primes[1] = 0
for p in primes:
if p > 0:
for x in range(p, (n // p) + 1):
try:
primes[x*p] = 0
except IndexError:
break
for x in range(n, 0, -1):
if x % 2 == 0:
print "{0} is EVEN".format(x)
else:
print "{0} is ODD".format(x)
if primes[n] > 0:
print "{0} is prime".format(x)
else:
print "{0} is not prime".format(x)