首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >素数N个负数不起作用

素数N个负数不起作用
EN

Stack Overflow用户
提问于 2017-05-08 15:01:54
回答 3查看 1.1K关注 0票数 0

我编写了这个代码来判断一个数字是否是素数(Y)或非(N)。

代码语言:javascript
运行
复制
number = int(input("Type a value for n. "))

if number > 1:
    for i in range(2, number):
        if (number % i)==0:
            print("N")
            break
    else:
        print("Y")
else:
    for i in range (number, -2):
        if ((number) % i)==0:
            print("N")
        break
    else:
        print("Y")

而且起作用了。但是当我把一个小于1的数字(数字< 1),比如-7,代码给了我一个错误的答案。

我已经做了一些修改,并意识到:

代码语言:javascript
运行
复制
number = int(input("Type a value for n. "))


if number > 1:
    for i in range(2, number):
        if (number % i)==0:
            print("N")
            break
    else:
        print("Y")
else:   
    for i in range (number,-2):
        if (number % i)==0:
            print("N")
            break

    else:
        print("Y")*

,但当我说:-7,答案是N(错)。-7是素数

有人能帮我吗?

EN

回答 3

Stack Overflow用户

发布于 2017-05-08 15:58:27

这是因为python中的范围/间隔是部分封闭的;它们是在右边打开的。所以当你这么做

代码语言:javascript
运行
复制
[i for i in range(2,10)]

你会得到

2,3,4,5,6,7,8,9

注意,2在那里,但10不在

类似的

代码语言:javascript
运行
复制
[i for i in range(-10,-2)]

将包括-10,(因此数字%i ==0为真),但不包括-2。

票数 1
EN

Stack Overflow用户

发布于 2017-05-08 15:03:00

我会使用abs,绝对值函数。它使消极的积极和积极的。

代码语言:javascript
运行
复制
number = abs(int(input("Type a value for n. ")))

if number > 1:
    for i in range(2, number):
        if (number % i)==0:
            print("N")
            break
    else:
        print("Y")
else:
    for i in range (number, -2):
        if ((number) % i)==0:
            print("N")
        break
    else:
        print("Y")
票数 0
EN

Stack Overflow用户

发布于 2017-05-08 15:10:56

所有素数都是自然数,也就是大于0的整数。因此,没有负数是素数。

一些资料来源:

链接

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

https://stackoverflow.com/questions/43851017

复制
相关文章

相似问题

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