这段代码的问题是在循环中,每次判断都会输出'yes'。应该将 print('yes') 移出循环,放在循环结束后输出。

import math
a = int(input())
if a == 1:
    print('no')
else:
    b = int(math.sqrt(a) + 1)
    for i in range(2,b):
        if a % i == 0:
            print('no')
            break
    else:
        print('yes')

优化后的代码:

import math
a = int(input())
if a == 1:
    print('no')
else:
    b = int(math.sqrt(a) + 1)
    for i in range(2,b):
        if a % i == 0:
            print('no')
            break
    else:
        print('yes')

解释:

在原始代码中,for 循环内的 else 语句会导致每次循环迭代都输出 'yes'。这并非我们想要的结果。

为了解决这个问题,我们将 print('yes') 语句移出了 for 循环,并将其放置在 else 语句块中,该语句块只在循环正常结束(没有 break 语句执行)的情况下才会执行。这意味着,只有当 a 成功通过所有质数测试时,才会输出 'yes'。

Python 判断质数代码优化:避免循环内错误输出

原文地址: https://www.cveoy.top/t/topic/pecu 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录