一、计算0~100以内的奇数和
# ①计算1到100之间的奇数和并输出
sum = 0
i = 0
for i in range(1, 100, 2):
sum += i
# print("1到100之间的奇数和:", sum)
二、用户输入n个数,返回其中最大的质数
# ②要求用户输入10个整数,然后输出其中最大的质数
# 如果用户没有输入质数,则输出一个消息进行提示
# 判断num是否为质数
def isPrimeNumber(num):
if num < 2:
return False
if num == 2:
return True
j = 2
for j in range(2, int((num / 2) + 2)):
if num % j == 0:
return False
return True
# 验证isPrimeNumber
# k = 0
# for k in range(k, 100):
# if isPrimeNumber(k):
# print(k)
inputStrs = sorted(input("请输入10个整数:").split(" "))
print("您输入的10个整数为", inputStrs)
# 转化为int list
ints = []
for i in range(0, len(inputStrs)):
temp = int(inputStrs[i])
if isPrimeNumber(temp):
ints.append(temp)
if len(ints) == 0:
print("您输入的整数中没有质数")
else:
print("您输入的数中最大的质数为:", sorted(ints)[len(ints) - 1])
三、约瑟夫问题描述如下:
在古罗马人占领乔塔帕特后,39个犹太人与约瑟夫和他的朋友躲到一个洞中。39个犹太人决定宁死也不被敌人抓到,于是商定以一种特殊的方式自杀:41个人排成一个圆圈,由第一个人开始报数,每报数到3的人就必须自杀,直到所有人都自杀身亡为止。但是约瑟夫和他的朋友并不想死,那么请问约瑟夫及其朋友应该怎样安排自己的位置才能逃过一劫?
peopleList = list(range(1, 42)) # 创建1到41的list表示位置
print(peopleList)
def kissEveryStep(list):
index = 0
while len(list) > 2:
index += 2
del list[index]
# index=8 len=10 newIndex=0
# index=8 len=9 newIndex=1
# index=8 len=8 newIndex=2
# index=6 len=8 newIndex=0 所以 newndex = 2 - (len(list) - index)。
# 又因为每次循环del前都会+2,所以要再-2
if index + 2 >= len(list):
index = 2 - (len(list) - index) - 2
kissEveryStep(peopleList)
print(peopleList)