使用函数求素数和

使用函数求素数和

本题要求实现一个判断素数的简单函数、以及利用该函数计算给定区间内素数和的函数。

素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。

函数接口定义:

int prime( int p );
int PrimeSum( int m, int n );

其中函数prime当用户传入参数p为素数时返回1,否则返回0;函数PrimeSum返回区间[m, n]内所有素数的和。题目保证用户传入的参数m≤n。

裁判测试程序样例:

#include <iostream>
#include <cmath>
using namespace std;

int prime( int p );
int PrimeSum( int m, int n );

int main()
{
    int m, n, p;

    cin >> m >> n;
    cout << "Sum of ( ";
    for( p=m; p<=n; p++ ) {
        if( prime(p) != 0 )
            cout << p << " ";
    }
    cout << ") = " << PrimeSum(m, n) << endl;

    return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:

-1 10

输出样例:

Sum of ( 2 3 5 7 ) = 17

Code:

int prime( int p )
{
    if(p <= 1) { //当这个数字小于或者等于1时,可以确定不是素数,返回0 
        return 0;
    }
    for(int i = 2; i <= sqrt(p); i ++) { //在2到sqrt(p)查找是否有可以整除的数字 
        if(p % i == 0) { //可以整除,则说明是非素数,返回0 
            return 0;
        }
    }
    return 1; //没有数字可以整除,则为素数,返回1 
}

int PrimeSum( int m, int n )
{
    int sum = 0;//初始化sum为0 
    for(int i = m; i <= n; i ++) { //在[m,n]区间内遍历 
        if(prime(i) == 1) { // prime(i) == 1则说明这个数是素数 
            sum += i; //累加起来 
        }
    }
    return sum; //返回素数和 
}

猜你喜欢

转载自blog.csdn.net/qq_41799219/article/details/81072574