素数是只能被自身和 1 整除的数。 例如,数字 5 是素数,因为它只能被 1 整除 和 5. 然而,数字 6 不是质数,因为它可以被整除 通过 2 和 3。
编写一个名为 is_prime 的布尔函数,它接受一个整数作为参数 如果参数是素数则返回 true,否则返回 false。使用 程序中提示用户输入数字然后输入的功能 打印该数字是否为素数。
这是我输入的 PYTHON 代码,但它告诉我它是错误的。我已经尝试过但无法得到它。
if num > 1:
for i in range(2,num):
if (num % i) == 0:
print(num,"is not a prime number")
print(i,"times",num//i,"is",num)
break
else:
print(num,"is a prime number")
else:
print(num,"is not a prime number")
代码中有几个问题:
-
break
语句的放置不正确。 如果找到一个因子,则break
语句会立即中断循环。这意味着它只检查一次除法。你需要在找到一个因子后移动break
语句,并且只在没有找到因子时打印素数消息。 -
else
语句的放置不正确。else
语句的第二个else
语句与if
语句的级别相同。应该与for
循环关联。
以下是已更正的代码:
def is_prime(num):
"""如果输入数字是素数,则返回 True,否则返回 False。"""
if num <= 1:
return False
for i in range(2, int(num**0.5) + 1):
if num % i == 0:
return False
return True
num = int(input("请输入一个数字:"))
if is_prime(num):
print(num, "是素数")
else:
print(num, "不是素数")
说明:
-
函数
is_prime()
: -
它接受一个整数
num
作为输入。 -
如果
num
小于或等于 1,则它不是素数,函数返回False
。 -
它遍历从 2 到
num
的平方根的整数(包含)。如果在此范围内找到任何因子,则num
不是素数,函数返回False
。 -
如果循环完成而没有找到因子,则
num
是素数,函数返回True
。 -
代码的其余部分:
- 它从用户那里获取一个整数输入。
-
它调用
is_prime()
函数来检查该数字是否为素数。 - 根据函数的返回值打印消息。
改进:
代码通过仅循环到输入数字的平方根来提高效率。这是因为如果一个数字有一个大于其平方根的因子,那么它也必须有一个小于其平方根的因子。
标签:python From: 64418880