Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 素数指示器,指示作为素数的巨大非素数_Python_Numbers - Fatal编程技术网

Python 素数指示器,指示作为素数的巨大非素数

Python 素数指示器,指示作为素数的巨大非素数,python,numbers,Python,Numbers,这段代码正在运行,但它正在将大量的数字计算为素数,例如3456734572525。5个测试用例中有4个成功。首先,我认为它在0或十进制数字上失败了,但事实并非如此。for循环永远不会运行到底,因为无论a%i==0你都会打破循环。您应该将print(“YES”)移到循环之外,并使用returnenstead ofbreak确保在循环中断时函数不会运行此代码。试试这个: def main(): try: a = int(input()) if isinstan

这段代码正在运行,但它正在将大量的数字计算为素数,例如3456734572525。5个测试用例中有4个成功。首先,我认为它在0或十进制数字上失败了,但事实并非如此。

for循环永远不会运行到底,因为无论
a%i==0
你都会打破循环。您应该将
print(“YES”)
移到循环之外,并使用
return
enstead of
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')
                        break
                    else:
                        print('YES')
                        break
            else:
                print('NO')
        else:
            print('NO')
    except EOFError:
        print('NO')
    except ValueError:
        print('NO')
main()

您在第一次运行时打破了循环
假设你把9放进去,想想看
它将无法满足==2条件
然后点击%i==0条件,当9%2=1时,它将返回YES

这个程序还有很多错误, 但是主要的问题是在第一次运行后中断,这没有任何意义, 如果删除了中断符并在else上打印if a%i==0,则它将起作用,但您可以在其中添加许多优化。

我建议参加一些关于python的课程/教程,而不是在没有什么先验知识的情况下尝试加入

祝你好运

你的代码一开始就不正确。
在一次“如果”检查之后,在循环中使用“中断”,因此基本上只检查一次。所以你的代码所做的就是判断这个数字是否可以被2整除

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()

只要你找到一个非除数,你就会跳出循环。该代码将21标识为素数。在你的脑海里走过它。
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')