- 论坛徽章:
- 0
|
本帖最后由 zhsx616 于 2018-02-03 09:54 编辑
程序功能是输入一个数,判断是不是质数
代码如下:import math
class NumberError(Exception):
pass
#如果输入的数小于2,则抛出自定义异常NumberError
def catcherror(x):
if x<2:
raise NumberError
while 1:
try:
n=int(raw_input('please input a number:'))
except ValueError:
print 'you must input a integer!'
try:
catcherror(n)
except NumberError:
print 'the number must be >= 2!'
#根号n如果不是整数
if not isinstance(math.sqrt(n),int):
#把根号n转换为整数m
m=int(math.sqrt(n))
#n去除2到m的每一个数,只要有任何一个数能整除,n就不是质数
for i in range(2,m+1):
if n%i==0: #如果能整除,break跳出for循环
print '%d is a composite number.'%n
break
elif n%i!=0:#如果不能整除,i+1
i+=1
#全部循环后都不能整除,则n是质数
print '%d is a prime number.'%n
#n开平方根有整数解,那么n必然是合数
else:
print '%d is a composite number.'%n
我想要的效果是,只要有一个数满足整除,那么输入的数n肯定就是合数,如果全部循环后都无法整除,那么n就是一个质数,这个时候输出“n是一个质数”,这个字符串我只想输出一次就行了,但是实际按照上面代码,每次循环满足“无法整除”的条件,就会输出一次。
这个问题该如何解决??
|
|