1

我正在尝试制作一个程序,该程序将使用一个非常简单的公式来判断一个数字是否为素数:将数字(x)除以 4。看看从 1 到 x/4 的任何数字是否完全除以 x。如果不是,x 将是素数。

该程序目前向我显示了将 x 除以从 1 到 x/4 的每个数字的结果。我想这样做:如果有一个可以完美分割的数字,打印 x 不是素数并结束程序。或者如果没有除以 x 的数字,只需说 x 是质数并结束程序。

我尝试使用布尔值,但随后它将每个数字都显示为素数,它不应该这样做,因为程序还不知道 x 可以完美地除以 1,但仍然是素数。

value = int(input("Type a number: "))

# prime = True

if value.__class__ == int:
    x = value / 4
    list = list(range(1, int(x) + 1))
    for number in list:
        y = value / number

        while y >= 0:
            y -= 1
            if y == 0:
                print(f"{value} is not prime")
                # print("yes")
                # y == -1
            elif 0 < y < 1:
                print(f"{value} is prime")
                # print("no")
    # if prime:
    #     print(f"{value} is prime")
    # else:
    #     print(f"{value} is not prime")
4

2 回答 2

0

你的第一个逻辑是错误的。您需要检查math.sqrt(x)

>>> import math
>>> [a/4 < math.sqrt(a) for a in range(100)]
[False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False]

从技术上讲,这将超越x=15但您将检查比您需要的更多的数字您可以通过查看图表来看到这一点https://www.desmos.com/calculator/dybweqs6lk

于 2019-05-26T11:38:44.680 回答
0

首先你在哪里找到这个公式?

其次,您没有实现您在代码中所说的内容。您需要检查划分后所有可能的四种类型并根据所有这些选择结果,而不是在任何循环中。

于 2019-05-26T11:40:35.170 回答