python奇数和、最大质数、约瑟夫问题

一、计算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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值