fizzBu​​zz 数字 1 到 100:(x3)Fizz、(x5)Buzz、(x3 & x5)FizzBu​​zz 以及 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