【问题标题】:Python - Program to check whether a number is prime or not [duplicate]Python - 检查数字是否为素数的程序[重复]
【发布时间】:2020-07-19 22:37:30
【问题描述】:

我是 python 新手。我只是尝试编写一个基本程序(检查一个数字是否为素数)。我参考了一个在线网站的代码并尝试自己编写一个。

代码如下:

#PYTHON PROGRAM TO CHECK PRIME NUMBER
print("Enter a number :: ", end = " ")
num = int(input())

if num > 1:
    for i in range(2,int(num/2)):
        if(num%i) == 0:
            print(str(num) + " is not prime")
            break;
    else:
        print(str(num) + " is prime")

else:
    print(str(num) + " is neither prime nor composite.")

我的疑问在于代码的工作。它运行没有任何错误并产生正确的输出。

迷惑代码sn-p是:

for i in range(2,int(num/2)):
    if(num%i) == 0:
        print(str(num) + " is not prime")
        break;
else:
    print(str(num) + " is prime")

编辑: 为什么 for 循环后面有 else 而 if 语句后面没有? 有人可以解释一下吗?

【问题讨论】:

  • 其中哪一部分你不明白?你知道% 是做什么的吗?
  • 这是典型的for...else 构造。这可能会帮助stackoverflow.com/questions/23625189/…
  • @mad_ 是的,这是我的疑问。非常感谢!

标签: python


【解决方案1】:

本质上,这个 for 循环检查从 2 到输入数字一半的所有数字。如果沿途有任何数字产生一个没有余数的完美除法(例如 4%2 = 0),那么它就会中断。 % 运算符为您提供 int 除法的余数(例如 5%2 = 1)。因此,对于素数来说,应该总是有余数,因为在指定的范围内不可能有完美的除法。如果没有余数,则代码会中断循环并将此数字归类为非素数。

【讨论】:

  • 我认为 OP 理解逻辑。 for..else 是让 OP 和许多其他人感到困惑的部分。
猜你喜欢
  • 2021-04-20
  • 2015-03-17
  • 2020-09-20
  • 2015-09-30
  • 1970-01-01
  • 2011-05-06
  • 2011-09-27
  • 1970-01-01
  • 2017-03-05
相关资源
最近更新 更多