本应查找数字是否为质数的程序无法正常工作

时间:2019-05-26 11:34:37

标签: python

我正在尝试制作一个程序,该程序将使用一个非常简单的公式来查找数字是否为质数:将数字(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")

2 个答案:

答案 0 :(得分: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

来查看

答案 1 :(得分:0)

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

您没有实现您在代码中所说的话。 您需要检查除法后所有可能的四种,并根据所有结果选择结果,而不要循环进行。