python怎么表示素数?
在计算机程序设计中,判断一个数是否为素数是常用算法之一,与素数相关的应用也非常多。在这一部分我们来集中讨论一下如何判断一个数为素数。
素数,又名质数,是指只有1和它本身两个因数的自然数。
如果要判断一个数n是否为素数,通常会采用穷尽法,即将n除以2到n-1中的每一个数。如果能被这个范围内的某一个数除尽,可知n不是素数,若是都除不尽,则n为素数。
n=int(input("请输入n(n>1)"))
t=0
for i in range(2,n):
if n%i==0:
t=t+1
if(t==0):
print(n,"是素数")
else:
print(n, "不是素数")
程序中的t用来统计n中除1和自身之外的因子个数。若循环执行完毕,t的值仍然为0,那么就可以知道n无其它因子,所以n为素数。
实际上当n除以2到n-1中某一个数能除尽(即余数为0)时,就可以得出结论:n肯定不是一个素数。这样也就没有必要继续再除下去了,基于这个思路,可以将程序改进如下:
n=int(input("请输入n(n>1)"))
for i in range(2,n):
if n%i==0:
break
if(i==n-1): #在循环体里,i最后取的值为n-1
print(n,"是素数")
else:
print(n, "不是素数") 实际上当n除以2到n-1中某一个数能除尽(即余数为0)时,就可以得出结论:n肯定不是一个素数。这样也就没有必要继续再除下去了,基于这个思路,可以将程序改进如下:
n=int(input("请输入n(n>1)"))
for i in range(2,n):
if n%i==0:
break
if(i==n-1): #在循环体里,i最后取的值为n-1
print(n,"是素数")
else:
print(n, "不是素数")
程序中的break语句是改变程序流程的语句,它可以结束这条循环语句的执行,去执行紧跟在循环语句后面的那条语句。因为是从循环中break退出的,所以i的值必然是不等于循环变量i取的最后一个值n-1的。但是这种情况,对于当n为2时程序会报错,因此可以进一步改进该程序:
n = int(input("请输入n(n>1)"))
for i in range(2, n):
if n % i == 0:
print(n, "不是素数")
break
else:
print(n, "是素数")
注意这里的else并不是与循环体里的if语句相匹配的,它是与for循环语句相匹配的,表示当for循环正常执行结束而不是用break强行退出时,去执行else子句的语句;若是在循环里执行break语句强行退出了,则不执行这个else子句。
此时再试一下,发现它就可以判断2是素数的这种情况了。
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有