實驗5-5 使用函數(shù)求素數(shù)和 (20 分)
1. 題目摘自
https://pintia.cn/problem-sets/13/problems/463
2. 題目內(nèi)容
本題要求實現(xiàn)一個判斷素數(shù)的簡單函數(shù)谆扎、以及利用該函數(shù)計算給定區(qū)間內(nèi)素數(shù)和的函數(shù)掐暮。
素數(shù)就是只能被1和自身整除的正整數(shù)。注意:1不是素數(shù)励翼,2是素數(shù)。
函數(shù)接口定義:
int prime( int p );
int PrimeSum( int m, int n );
其中函數(shù)prime當(dāng)用戶傳入?yún)?shù)p為素數(shù)時返回1辜荠,否則返回0汽抚;函數(shù)PrimeSum返回區(qū)間[m, n]內(nèi)所有素數(shù)的和。題目保證用戶傳入的參數(shù)m≤n伯病。
輸入樣例:
-1 10
輸出樣例:
Sum of ( 2 3 5 7 ) = 17
3. 源碼參考
#include <iostream>
#include <math.h>
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;
}
int prime( int p )
{
int n = sqrt(p);
if(p < 2)
{
return 0;
}
for(int i = 2; i <= n; i++)
{
if(p % i == 0)
{
return 0;
}
}
return 1;
}
int PrimeSum( int m, int n )
{
int s;
s = 0;
for(int i = m; i <= n; i++)
{
if(prime(i))
{
s += i;
}
}
return s;
}