Python prime函数未返回正确的结果

Python prime函数未返回正确的结果,python,primes,Python,Primes,我写了一段代码来检查一个数字是否是素数。它可以在Powershell中工作,但不能在在线提交平台上工作 我已经重新阅读了如何定义一个数是素数,我找不到我的代码中可能遗漏的任何东西 x = int(input('Please enter a number: ')) if x > 1: for i in range(2, x): if (x % i) == 0: print('The number you inputted is not a p

我写了一段代码来检查一个数字是否是素数。它可以在Powershell中工作,但不能在在线提交平台上工作

我已经重新阅读了如何定义一个数是素数,我找不到我的代码中可能遗漏的任何东西

x = int(input('Please enter a number: '))

if x > 1:
    for i in range(2, x):
        if (x % i) == 0:
            print('The number you inputted is not a prime number.')
            break
        else:
            print('The number you inputted is a prime number.')
            break
else:
    print('The number you inputted is not a prime number.')

应该打印出一个数字是否为素数。

好吧,首先你必须删除最里面的else子句

例如,假设x=9。控制流将输入for子句,从i=2开始。它将测试x%i==0,也就是说,x是否可以被i整除。事实并非如此。然后转到else子句。打印“您输入的数字是质数”并中断,结束for循环。那不是你想要的

只有在研究了这个数是否可以被所有的i整除后,你们才能得出结论,这个数是素数。也就是说,您希望结束数字为质数的代码(打印(“您输入的数字是质数”)在for循环之外

总体而言,需要进行一些调整。以下是一个可行的解决方案:

x = int(input('Please enter a number: '))

if x > 1:
    for i in range(2, x):
        if (x % i) == 0:
            print('The number you inputted is not a prime number.')
            break
    if i==x-1:
            print('The number you inputted is a prime number.')
else:
    print('The number you inputted is not a prime number.'

删除else语句怎么样。你真的需要检查所有的数字2。。。(k-1)


您可以将
用于else
构造,这样只有在循环结束时,才能确定质数,而不会因为找到除数而中断。此外,在查找除数时,只需迭代到输入数的平方根:

x = int(input('Please enter a number: '))

for i in range(2, int(x ** .5) + 1):
    if x % i == 0:
        print('The number you inputted is not a prime number.')
        break
else:
    print('The number you inputted is a prime number.')
这一修正奏效了

解决方案 下面是一个按照您尝试代码的方式建模的解决方案。请注意,有时,如果从某些网站复制代码,可能会遇到代码格式问题/缩进问题。例如,当我复制一个类似的代码块时,重复返回缩进错误。我唯一能绕过这个问题的方法就是手工输入代码逻辑

也许可以尝试通过将代码复制粘贴到纯文本编辑器(如记事本)中,然后将其复制粘贴到您正在使用的IDE中来解决这个问题

def为素数(num):
isprime=False
#素数大于1
如果(数值>1):
对于范围内的i(2,num):
#检查是否可被任何数字整除
#除自身和1之外
如果(数量%i)==0:
isprime=False
打破
#不能被任何数字整除的
#除自身和1之外
其他:
isprime=True
#数字0和1不是质数
其他:
isprime=False
返还优先权
是素数(31),是素数(42)
输出

(True, False)

我想建议一种更具python风格的方式:

x = int(input('Please enter a number: '))
if x<2:
    print('The number you inputted is not a prime number.')
elif x==2:
    print('The number you inputted is a prime number.')
else:
    y = range(2,x)
    mod = map(lambda a:divmod(x,a)[1],y)
    if all(mod):
        print('The number you inputted is a prime number.')
    else:
        print('The number you inputted is not a prime number.')
x=int(输入('请输入一个数字:'))

如果循环中的条件总是在第一次迭代时中断循环。从解决此问题开始。在联机提交平台上不起作用。请提供更多详情。你收到了什么错误信息或输出错误?他的代码根本不起作用。在你尝试所有可能的素数因子之前,你不可能知道一个数是否是素数。不仅仅是其中一个。而且,你可以检查x的平方根,而不是x-1@SayandipDutta是的,他确实需要一个环。你的观点?它将打印
。。。非素数的素数
后跟
素数
如果x>1,则不需要
,因为如果给定的输入数不大于
2,则
范围
生成器将不生成任何内容,因此将强制循环立即完成并进入
else
块以确定它是一个素数。
(True, False)
x = int(input('Please enter a number: '))
if x<2:
    print('The number you inputted is not a prime number.')
elif x==2:
    print('The number you inputted is a prime number.')
else:
    y = range(2,x)
    mod = map(lambda a:divmod(x,a)[1],y)
    if all(mod):
        print('The number you inputted is a prime number.')
    else:
        print('The number you inputted is not a prime number.')