首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检查python中的素数

检查python中的素数
EN

Stack Overflow用户
提问于 2019-06-12 08:54:41
回答 6查看 2.2K关注 0票数 0

我写这个程序是为了检查“否”的情况。是否为素数,但它会多次显示该数字为素数。我该怎么解决呢?

若要检查该数字是否为素数,请检查是否为正数。

代码语言:javascript
运行
复制
num = int(input("please enter the number you want to check\n"))

if num > 1:
    for i in range(2, num):
        if (num % i) == 0:
            print("the number is not prime")
            print(str(i) + " times " + str(num//i) + " is "+ str(num))
            break
        else:
            print("the number is prime")
elif(num == 1):
    print("the number is not prime")
else:
    print('enter a positive value')
EN

Stack Overflow用户

回答已采纳

发布于 2019-06-12 09:00:02

您的问题是,for-循环的else部分是错误的。每次除法检查失败时,您都会打印"the number is prime",而不仅仅是在最后。

我添加了一个isPrime布尔值,用于跟踪单个检查是否失败。只有当none失败时,才能打印出该数字是素数。

代码语言:javascript
运行
复制
num = int(input("please enter the number you want to check\n"))

if num > 1:
    isPrime = True
    for i in range(2, num):
        if (num % i) == 0:
            print("the number is not prime")
            print(str(i) + " times " + str(num//i) + " is "+ str(num))
            isPrime = False
            break
    if isPrime:
        print("the number is prime")
elif(num == 1):
    print("the number is not prime")
else:
    print('enter a positive value')

您可以通过一个名为换-否则的python构造(@TheGamer007 007的学分)进一步简化它:

代码语言:javascript
运行
复制
num = int(input("please enter the number you want to check\n"))

if num > 1:
    for i in range(2, num):
        if (num % i) == 0:
            print("the number is not prime")
            print(str(i) + " times " + str(num//i) + " is "+ str(num))
            break
    else:
        print("the number is prime")
elif(num == 1):
    print("the number is not prime")
else:
    print('enter a positive value')

它可以工作,因为Python的for-loops可以有一个else:追随者,只有在不脱离循环的情况下才会触发。

这可能正是你想要做的。在这种情况下,你所做的只是你的缩进。

此外,从算法的角度来看,有更好的方法来检验。第一个简单的改进是您不需要检查range(2,num),而只需要检查range(2, int(math.sqrt(num))+1)

票数 1
EN
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56558234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档