6-3 sdut-使用函数求区域内的素数之和

6-3 sdut-使用函数求区域内的素数之和

分数 20
作者 周雪芹
单位 山东理工大学
设计函数,求指定范围内的素数之和。

函数1:prime(p), 用户传入参数p,若它为素数时返回True,否则返回False.

函数2:PrimeSum(m,n),返回区间[m, n]内所有素数的和(其 中,1<=m<n)。

函数接口定义:

prime(p),返回True表示p是素数,返回False表示p不是素数;
PrimeSum(m,n),函数返回素数之和。

在这里解释接口参数。例如:其中 N 和 D 都是用户传入的参数。 N 的值不超过int的范围; D 是[0, 9]区间内的个位数。函数须返回 N 中 D 出现的次数。

裁判测试程序样例:

/* 请在这里填写答案 */

m,n=input().split()
m=int(m)
n=int(n)
print(PrimeSum(m,n))

输入样例:

1 10

输出样例:

17

代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

解题思路

本题是非常经典的题目,值得注意的是Python中由于range函数的原因,第一次起始循环的数字必须单独判断,根据素数的性质,所以数字1,2都需要单独判断。

代码实现

def prime(p):
    if p == 1:
        return False
    elif p == 2:
        return True

    for i in range(2, math.ceil(math.sqrt(p)) + 1):
        if p % i == 0:
            return False
    return True


def PrimeSum(m, n):
    import math
    global math
    sum = 0
    for i in range(m, n + 1):
        if prime(i):
            sum += i
    return sum
posted @ 2022-12-05 22:50  蠢蛋快跑  阅读(182)  评论(0)    收藏  举报