【问题标题】:fizzBuzz numbers 1 to 100: (x3)Fizz, (x5)Buzz, (x3 & x5)FizzBuzz alongwith prime numbers in pythonfizzBu​​zz 数字 1 到 100:(x3)Fizz、(x5)Buzz、(x3 & x5)FizzBu​​zz 以及 python 中的素数
【发布时间】:2020-12-09 13:54:51
【问题描述】:

以下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)```

【问题讨论】:

  • x % x == 0 and x % 2 == 1 这不是质数条件。要获取素数,必须设置素数条件
  • @toRex,除了 fizz、buzz、fizzbuzz 条件之外,什么是正确的素数条件?

标签: python python-3.x primes fizzbuzz


【解决方案1】:

正如@toRex 在 cmets 中提到的,您正在使用以下条件检查数字是否为素数:

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 号码将被视为fizz,而不是预期的FizzBuzz

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-06
    • 2012-02-21
    • 2018-07-18
    • 2012-11-04
    • 1970-01-01
    相关资源
    最近更新 更多