x=11
for n in range(1,x+1):
#print(n)
if (x%n)==0:
if n == 1 and n==x:
print(f"{x} is a prime number")
break
else:
#print(n)
print(f"{x} is not a prime number")
break
isprime = True
for n in range(1,x+1):
if x % n == 0 and n != 1 and n != x:
isprime = False
break
if isprime:
print(f"{x} is a prime number")
else:
print(f"{x} is not a prime number")
您试图实现的
x
中判定为素数的算法如下所示:给定一个整数
x
作为输入,在1
和x
之间循环所有整数n
。 如果我们找到一个n
精确地除以x
,并且如果n
不是1
或x
,则输出x
不是素数。否则,输出x
是素数通过这样的描述,您可以看到Python的错误所在。在所描述的算法中,我们无法判断
x
是否为素数,直到我们尝试了所有的n
,并确定它们不除x
,除非n == 1
或n == x
。但是在您的示例代码中,在我们完成对所有n
的循环之前,您的素性测试(顺便说一句,这是错误的)相反,算法说我们应该首先尝试所有的
n
,检查x
是否不是素数,如果我们找不到一个显示x
是不是素数的,那么x
显然是素数。这就是我们在Python中要做的根据描述,我们可以编写一个测试,测试一个数字是否不是素数:
如果任何
n
给出了这个条件的True
,那么x
不是素数。我们可以对每个n
执行此操作,并在找到循环时停止循环:现在,如果我们在没有
break
的情况下到达循环的末尾,那么我们知道x
是素数。我们怎么知道我们什么时候完成了循环?一个选项是使用标志变量,而不是直接打印输出。例如这对你有用。它不是素性测试最有效的算法,但它简单有效
注: 作为快速的第一步,如果只是从
n=2
循环到n=x-1
,则不需要n == 1
和n == x
测试。例如相关问题 更多 >
编程相关推荐