素数N |负数不存在

2024-03-29 14:34:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我写了这个代码来判断一个数是素数(Y)还是非素数(N)。你知道吗

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(number<;1)的数字,比如-7,代码会给我一个错误的答案。你知道吗

我已经做了一些改变并且意识到:

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是素数

有人能帮我吗?你知道吗


Tags: 答案代码innumberforinputifvalue
3条回答

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

[i for i in range(2,10)]

你得到了吗

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

注意,有2个,但没有10个

同样地

[i for i in range(-10,-2)]

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

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

一些来源:

http://mathforum.org/library/drmath/view/55940.html

https://en.wikipedia.org/wiki/Prime_number

我将使用abs,绝对值函数。它使消极的积极和积极的积极。你知道吗

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

相关问题 更多 >