M = int(input())
flag=1
if M == 2:
print("Yes")
elif M <= 0:
print("No")
elif M == 1:
print("No")
else:
for i in range(2, M):
if M % i == 0:
flag=0
break
if flag==1:
print("Yes")
else:
print("No")
基于Monster 组和GPT的调写:
剪枝优化:
import math
M = int(input())
flag = 1
if M == 2:
print("Yes")
elif M <= 0 or M == 1:
print("No")
else:
for i in range(2, int(math.sqrt(M)) + 1):
if M % i == 0:
flag = 0
break
if flag == 1:
print("Yes")
else:
print("No")
用质数筛选法的优化
import math
# 构建素数表
MAXN = 1000000
is_prime = [True] * (MAXN + 1)
is_prime[0], is_prime[1] = False, False
for i in range(2, int(math.sqrt(MAXN)) + 1):
if is_prime[i]:
for j in range(i * i, MAXN + 1, i):
is_prime[j] = False
M = int(input())
if M < 2 or not is_prime[M]:
print("No")
else:
print("Yes")
你的M最大到多大?
稍微超时一点
for i in range(2, sqrt(M)):
这里判断到根号下M即可
如果超时很多,你得用筛法等更高效的算法
顺便说下,这种flag的写法,是C语言带来的,python有更优雅的实现,for ... else
第一个输出要求逆序i输出所有元素,要清除空格,我的思路是先将得到的字符串转为列表再使用reverse函数,再转化为无间隔字符串输出。
x_list=s.split() #s是input得到的字符串
x_list.reverse()
x2_list=''.join(x_list)
print(x2_list)
第二个输出要求输出原列表,那么直接将刚才得到的列表化的字符串输出便可。
print(x_list)
第三个输出要求逆序输出原列表每个元素,中间以1个空格分隔。
则将得到的逆序的列表转化为字符串,元素间用空格(’ ')隔开。
s_list.reverse()
s2_list=' '.join(s_list)
且最后一个元素后面不可带有空格。
则使用rstrip函数再输出:
rstrip函数在Python中用以删除 string 字符串末尾的指定字符(默认为空格)
s2_list.rstrip()
print(s2_list)
最终的得到整体的代码:
s=input()
x_list=s.split()
x_list.reverse()
x2_list=''.join(x_list)
print(x2_list)
print(x_list)
s_list.reverse()
s2_list=' '.join(s_list)
s2_list.rstrip()
print(s2_list)