西电oj题:1019: 判断素数
题目描述
Pile 想实现一个判断素数的函数。当这个数是素数的时候输出 ‘True’ ,不是素数输出 ‘False’ 。
但是她是一个粗心的孩子,她有时候会输入一些奇怪的字符串,这个时候你需要输出 ‘invalid’。
输入
输入一行一个字符串表示 Pile 的输入。
输出
对于输入,输出一行字符串 ‘True’ ‘False’ 或者 ‘invalid’ 表示结果。
样例输入
2
样例输出
True
提示
有可能触发的错误类型:
TypeError
ValueError
这道题需要的循环次数比较多,可能会出现超时的情况。请百度一下如何减少素数判断循环,是否需要做0到n的全部循环?
代码
#!/usr/bin/python3
import math
def isprime(i):
for ii in range(2, int(math.sqrt(i)) + 1):
if i % ii == 0:
return False
return True
#print(isprime(100))
try:
pin = int(input())
out = isprime(pin)
print(out)
except ValueError:
print('invalid')
except TypeError:
print('invalid')
except:
print('invalid')