我正在尝试制作一个程序,该程序将使用一个非常简单的公式来查找数字是否为质数:将数字(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")
答案 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)
首先您在哪里找到这个公式?
您没有实现您在代码中所说的话。 您需要检查除法后所有可能的四种,并根据所有结果选择结果,而不要循环进行。