首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >这段代码有意义吗?Python中的质数

这段代码有意义吗?Python中的质数
EN

Stack Overflow用户
提问于 2018-07-06 04:14:04
回答 3查看 68关注 0票数 -2
代码语言:javascript
复制
def prime_checker(num):
    if num <=1:
        print('Not Prime')
    elif num == 2:
        print('Prime')
    else:
        for i in (2, (num ** (1/2))):
                if num%i == 0:
                    print('Not Prime')
                    break
                else:
                    print('Prime')
                    break

我对编程是个超级新手,只是在学习基础知识。我基于我在维基百科上找到的质数测试。

我想它起作用了。这可能很麻烦,但似乎是可行的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-07-06 04:20:56

for循环的迭代器应该是一个整数范围,而不仅仅是2的元组和数字的平方根。使用range时,请确保先使用int将边界转换为整数。只有当一个数不能被循环中的任何一个数除尽时,它才被认为是质数,所以你应该只在循环结束后声明一个质数,否则循环应该声明“不是质数”并返回。

代码语言:javascript
复制
def prime_checker(num):
    if num <=1:
        print('Not Prime')
    elif num == 2:
        print('Prime')
    else:
        for i in range(2, int(num ** (1/2)) + 1):
            if num%i == 0:
                print('Not Prime')
                return
        print('Prime')

prime_checker(63)
prime_checker(31)
prime_checker(9)

这将输出以下内容:

代码语言:javascript
复制
Not Prime
Prime
Not Prime
票数 1
EN

Stack Overflow用户

发布于 2018-07-06 04:29:54

您的逻辑很好,但是您可以将sqrt用于平方根,如果您提供了一个TypeError参数,那么range函数也会引发一个float (这通常是使用平方根时的情况)。

一个有效的实现是:

代码语言:javascript
复制
from math import sqrt

def prime_checker(num):
    is_prime = True
    if num <= 1 or not isinstance(num, int):
        is_prime = False
    elif num == 2:
        pass
    else:
        for i in range(2, int(sqrt(num)) + 1):
            if num % i == 0:
                is_prime = False
                break
    if is_prime:
        print('Prime')
    else:
        print('Not Prime')
票数 1
EN

Stack Overflow用户

发布于 2018-07-06 05:27:10

我想我让它工作了,而不是作为一个函数。

代码语言:javascript
复制
from math import sqrt

print('This script will check if your input is a prime number.')

num = int(input('Number: '))

if num <=1:
    print('Not Prime')
elif num == 2 or num ==3:
    print('Prime')
else:
    for i in range(2, int(sqrt(num)) + 1):
        if num%i == 0:
            a = 'Not Prime'
            break
        else:
            a = 'Prime'

    print(a)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51199180

复制
相关文章

相似问题

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