fizzBuzz 数字 1 到 100:(x3)Fizz、(x5)Buzz、(x3 & x5)FizzBuzz 以及 python 中的素数
fizzBuzz numbers 1 to 100: (x3)Fizz, (x5)Buzz, (x3 & x5)FizzBuzz alongwith prime numbers in python
python中的以下代码需要更正什么?
例如 91 不是质数,但如何更正?
for x in range(100):
if x%3==0:
print ("Fizz", x)
elif x%5==0:
print ("buzz",x)
elif x%3==0 and x%5 == 0:
print ("FizzBuzz",x)
elif x%x==0 and x%2==1:
print ("Prime number",x)```
正如评论中提到的@toRex,您正在使用以下条件检查数字是否为质数:
x%x==0 and x%2==1
请注意 x%x==0
始终为真。所以基本上你只是检查一个数字是否是奇数,并将它作为质数打印出来。一般来说,有很多方法可以检查一个数是否为质数,具体在 python 中。例如,您可以使用 Checking if a number is a prime number in Python 并从那里获取第一个算法:
from math import sqrt
from itertools import count, islice
def is_prime(n):
return n > 1 and all(n % i for i in islice(count(2), int(sqrt(n)-1)))
然后调用:
for x in range(100):
if x%3==0 and x%5 == 0:
print ("FizzBuzz",x)
elif x%3==0:
print ("Fizz", x)
elif x%5==0:
print ("buzz",x)
elif is_prime(x):
print ("Prime number",x)
将输出预期的输出。另请注意,我已经颠倒了条件的顺序,首先检查数字是否为 FizzBuzz
,然后才检查他是 fizz 还是单独的 buzz。否则 fizz
数字将被视为 fizz
而不是预期的 FizzBuzz
。
python中的以下代码需要更正什么?
例如 91 不是质数,但如何更正?
for x in range(100):
if x%3==0:
print ("Fizz", x)
elif x%5==0:
print ("buzz",x)
elif x%3==0 and x%5 == 0:
print ("FizzBuzz",x)
elif x%x==0 and x%2==1:
print ("Prime number",x)```
正如评论中提到的@toRex,您正在使用以下条件检查数字是否为质数:
x%x==0 and x%2==1
请注意 x%x==0
始终为真。所以基本上你只是检查一个数字是否是奇数,并将它作为质数打印出来。一般来说,有很多方法可以检查一个数是否为质数,具体在 python 中。例如,您可以使用 Checking if a number is a prime number in Python 并从那里获取第一个算法:
from math import sqrt
from itertools import count, islice
def is_prime(n):
return n > 1 and all(n % i for i in islice(count(2), int(sqrt(n)-1)))
然后调用:
for x in range(100):
if x%3==0 and x%5 == 0:
print ("FizzBuzz",x)
elif x%3==0:
print ("Fizz", x)
elif x%5==0:
print ("buzz",x)
elif is_prime(x):
print ("Prime number",x)
将输出预期的输出。另请注意,我已经颠倒了条件的顺序,首先检查数字是否为 FizzBuzz
,然后才检查他是 fizz 还是单独的 buzz。否则 fizz
数字将被视为 fizz
而不是预期的 FizzBuzz
。