使用函数求素数和
本题要求实现一个判断素数的简单函数、以及利用该函数计算给定区间内素数和的函数。
素数就是只能被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; //返回素数和
}