素数指示器将巨大的非素数指示为素数

def main():

    try:

        a = int(input())

        if isinstance(a, int):

            a = int(a)

            if a ==2:

                print('YES')

            if a > 1:

                for i in range(2, a):

                    if a % i == 0:

                        print('NO')

                        break

                    else:

                        print('YES')

                        break

            else:

                print('NO')

        else:

            print('NO')

    except EOFError:

        print('NO')

    except ValueError:

        print('NO')

main()

这段代码可以工作,但它正在计算巨大的数字作为素数,例如 3456734572525。它在 5 个测试用例中的 4 个测试用例中是成功的。首先我认为它在 0 或十进制数字上失败,但事实并非如此。


慕莱坞森
浏览 159回答 3
3回答

慕沐林林

for 循环永远不会运行到最后,因为无论a % i == 0您是否会打破循环。您应该将您的代码移到print("YES")循环之外并使用return代替break来确保您的函数在循环中断时不会运行此代码。尝试这个:def main():    try:        a = int(input())        if isinstance(a, int):            a = int(a)            if a ==2:                print('YES')            if a > 1:                for i in range(2, a):                    if a % i == 0:                        print('NO')                        return                print('YES')                return            else:                print('NO')        else:            print('NO')    except EOFError:        print('NO')    except ValueError:        print('NO')main()

繁花如伊

您的代码实际上从一开始就是不正确的。在一次“if”检查之后,您在循环内使用“break”,所以基本上您只检查一次。所以你的代码所做的就是判断这个数字是否能被 2 整除。try:    a = int(input())    flag = 0    if isinstance(a, int):        a = int(a)        if a==1:            print('Neither')        elif a ==2:            print('YES')        else:            for i in range(2, a):                if a % i == 0:                    flag=1                    break    else:        print('NO')except EOFError:    print('NO')except ValueError:    print('NO')if flag:    print('NO')else:    print('YES')

回首忆惘然

你在第一次运行时打破了循环,假设你把 9 放进去,想想它会失败 == 2 条件,然后达到 % i ==0 条件,并且 9%2 = 1,它会返回是除此之外,该程序还有很多错误,但主要问题是在第一次运行后中断,这没有任何意义,如果您删除了中断并在 else 上打印 if a%i==0 它将起作用,但是您可以在那里进行许多优化。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python