【问题标题】:Prime number in PythonPython中的素数
【发布时间】:2021-12-28 09:10:40
【问题描述】:
#Write your code below this line ????
def prime_checker(number):
    for num in range (2, number):
        if num % number == 0:
            print("It is not a prime number")
        else:
            print("It is a prime number")


#Write your code above this line ????
    
#Do NOT change any of the code below????
n = int(input("Check this number: "))
prime_checker(number=n)

我如何打印一个数字是素数或不是一次的文本?

【问题讨论】:

  • 提示:如果有东西在循环体中,那么每次迭代都会发生

标签: python loops for-loop primes


【解决方案1】:

修复

number % num == 0 而不是num % number == 0

当你找到一个不能整除它的数字时,一个数字不是质数,但只有当你测试了所有的数字并且没有一个能整除它时

使用for/else 构造,如果没有使用break,则进入else

def prime_checker(number):
    for num in range(2, number):
        if number % num == 0:
            print("It is not a prime number")
            break
    else:
        print("It is a prime number")

请注意,这只能解决您的问题,但这不是检查数字是否为素数的最佳方法,至少,以数字的平方根结束范围,并直接验证除以小数字,例如2,3,5,7

【讨论】:

  • 谢谢。但看起来这段代码是错误的。它向我们表明,4 不是质数。 snap.ashampoo.com/…
  • @KamilKuczyńskizNaukopedia 这不是我写的代码。 else 带有for 而不是if,所以它应该有for 的缩进
  • 是的。谢谢。如果for没有else,为什么程序会多次打印文本:“It is a prime number”?
  • @KamilKuczyńskizNaukopedia 因为我发现了一个大错误:number % num == 0 而不是num % number == 0
【解决方案2】:

您的代码中几乎没有错误。我已经修改了它们。

def prime_checker(number):
    for num in range(2, number):
        if number % num == 0:
            print('Not prime')
            return
    print('Prime number')
# Write your code above this line ?

# Do NOT change any of the code below?
n = int(input("Check this number: "))
prime_checker(number=n)

for 循环是检查从 2 开始的任何一个数是否是数的因数。

【讨论】:

  • 谢谢。在职的。但是“如何做到只有一个文本是素数”? snap.ashampoo.com/…
  • 谢谢。我的代码只打印一次。我没有使用 else 条件。
  • 我明白了。谢谢你。我正在检查“返回”功能。没有它,程序会打印两条语句:它是素数而不是素数。所以如果我们不给程序加一个“return”,程序会检查数字并打印文本,然后到下一点表示打印文本:“It is a prime number”。但是当条件为真时,函数“return”会停止程序吗?
  • 你的代码对我来说比我的老师更容易也更合乎逻辑:``` def prime_checker(number): is_prime = True for i in range(2, number): if number % i = = 0: is_prime = False if is_prime: print ("It is a prime number") else: print('It is not a prime number')如果”,然后是第二个“如果”?
【解决方案3】:

首先,通过

进行更有效的质数检查
  • 直到数字的 sqrt 为止
  • 按 2 步进行
import math


def is_prime(n: int) -> bool:
    if n in (2, 3, 5):
        return True
    if n < 2 or n % 2 == 0:
        return False
    for i in range(3, math.ceil(math.sqrt(n)), 2):
        if n % i == 0:
            return False
    return True

现在你可以将这个函数包装在你的函数中

def prime_checker(n: int):
    msg = "%d is prime" if is_prime(n) else "%d is not prime"
    print(msg % n)


prime_checker(11)
# 11 is prime

【讨论】:

  • 谢谢,在这个任务中我们不能使用 math.sqrt(n)
【解决方案4】:

我认为检查一个数字是否是素数是很好的

def is_prime(n):
    st = "prime" #  being prime status

    for i in range(2,n):
        if n % i == 0: # if number is prime
            st = "not prime"
            break;


    return st 



n = int(input("enter n:  "))
print (is_prime(n))

您只需要更改代码的结尾
除了以下几行之外,您的功能是正确的:

if num % number == 0:
    print("It is not a prime number")
else:
    print("It is a prime number") 

您应该将这些更改为:

st = "Prime"
if number % num == 0:
    st = "not prime"
    return st

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-07
    • 2015-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多