I am a teacher!

导航

习题解析之:素数求和

【问题描述】

输入一个正整数n,统计从[0,n]之间的最大的10个素数之和。本题保证测试用例至少有10个满足条件的素数。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

本题要求使用自定义函数完成,代码框架参考如下:

def isprime(n): #判断素数函数
......
def f(n): #找小于等于n的素数并求和
......
......
p=int(input())
print(f(p))
示例 1‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
输入:
31
输出:
3+5+7+11+13+17+19+23+29+31=158

【编程思路】

        先编写一个函数 isprime(n) 用于判断整数 n 是否为素数,若n 是素数,返回 True;否则,返回 False。

        要统计从[0,n]之间的最大的10个素数之和。可以先创建一个空列表 ls,用于保存最大的 10 个素数。

        用循环 for i in range(n,1,-1): 寻找 10 个最大的素数,每找到一个素数将其加入到列表 ls,若列表 ls 中元素的个数为 10(len(ls) == 10),则表示已找到 10 个素数,退出循环。并按输出样例的格式构造出一个字符串作为函数返回值。输出为一个等式,等式的左边是 10 个最大素数的相加式,用 '+'.join(map(str,ls)) 来构造,即将列表 ls 中保存的 10 个最大素数转换为字符串后用加号“+”连接起来;等式的右边是 10个素数的和,即 sum(ls)。

        编写的源程序如下:

        image

posted on 2025-11-26 14:47  aTeacher  阅读(0)  评论(0)    收藏  举报