如果满足特定条件,如何跳过部分代码

时间:2020-07-08 16:07:45

标签: python python-3.x math primes brute-force

随着我越来越喜欢用Python编写脚本,我编写了一个脚本,该脚本通过尝试将每个数字划分为每个数字的范围来找到素数(有点像蛮力哈哈)。 它可以工作,但是我想使过程更快,更有效。

我的代码:

count = 0

for i in range(2,1000):
    j = 2
    while j < 1000:
        if i%j==0:
            count = count + 1
        j = j + 1
    if count == 1:
        print(i)
    count = 0

说明:

我检查并将数字存储在count中。 如果在检查结束时count等于1,则表示该数字为质数(仅被自身除以除数)。

我现在想要的是停止检查当“ count”变量超过1(2个或更多)时可以除以多少的过程。我该怎么办?

我想对tryexcept做点什么,但不知道...

3 个答案:

答案 0 :(得分:3)

在此处添加一个额外条件,如果计数大于一个,则break循环外。将其放入while循环中:

if i % j == 0:
  count += 1
  if count > 1:
      break

如注释中所述,将count用作循环条件的一部分会更清洁。这是一个改进的版本:

for i in range(2, 1000):
    j = 2
    count = 0
    while j <= i and count < 2:
        if i % j == 0:
            count += 1
        j += 1
    if count == 1:
        print(i)

当然,有更快的方法来确定数字是否为质数-特别是在内部循环中,您不应该迭代直到1000,直到到达i为止,直到sqrt(i),但我会留给您改进;)

答案 1 :(得分:0)

您可以尝试使用breakbreak的作用是跳过了循环的其余部分,并跳转到循环后的语句。

count = 0
for i in range(2,1000):
    j = 2
    while j < 1000:
        if i%j==0:
            count = count + 1
            break
        j = j + 1   ### line 8
    if count == 1:
        print(i)
        
    count = 0

在此代码中,当python遇到break时,它将跳过循环的其余部分(即,未执行剩余的循环),并直接跳至下一条语句,即第8行

答案 2 :(得分:0)

完全错误,首先您必须了解用于检查质数的算法,如果不能将其完全除以2到(number // 2)-1之间的任何数字,则基本上是质数

现在在您的问题中,您无法在任何地方使用break,请先搜索所有可除数然后检查质数,更好的是,向您的问题添加示例代码,这对于查找质数更可行< / em>

代码

number = int(input("Enter A Number"))
for i in range(2,number//2+1):      #See range arguments
    if(number%i==0):
        print("Not A Prime")
        break          #Break loop when condition reached