本题的目标很简单,就是判断一个给定的正整数是否素数。
输入格式:
输入在第一行给出一个正整数N(≤ 10),随后N行,每行给出一个小于2
31
的需要判断的正整数。
输出格式:
对每个需要判断的正整数,如果它是素数,则在一行中输出Yes,否则输出No。
输入样例:
2
11
111
输出样例:
Yes
No
import math
def x(n):
flag=1
for i in range(2,int(math.sqrt(n))+1):
if n%i==0:
flag=0
if n<=1:
flag=0
return flag
n=int(input())
a=[]
for i in range(n):
m=int(input())
a.append(x(m))
for i in a:
if i == 1:
print('Yes')
else:
print('No')
这里分小于等于1 和 从2起的数字,分开进行判断,使用 math.sqrt(n) 来减少循环
因为一个数的因数是成对出现的,其中一个因数在开方后的前面一个在开方后的后面,所以只需判断它前面的数就可以了,如果前面都没有,那么它后面更不会有.这样就可以减少循环次数.