習題5-4 使用函數求素數和 (20分)
本題要求實現一個判斷素數的簡單函數、以及利用該函數計算給定區間內素數和的函數。 素數就是隻能被1和自身整除的正整數。注意:1不是素數,2是素數。函數接口定義:
int prime( int p );
int PrimeSum( int m, int n );
其中函數prime當用戶傳入參數p爲素數時返回1,否則返回0;函數PrimeSum返回區間[m, n]內所有素數的和。題目保證用戶傳入的參數m≤n。
裁判測試程序樣例:
#include <stdio.h>
#include <math.h>
int prime( int p );
int PrimeSum( int m, int n );
int main()
{
int m, n, p;
scanf("%d %d", &m, &n);
printf("Sum of ( ");
for( p=m; p<=n; p++ ) {
if( prime(p) != 0 )
printf("%d ", p);
}
printf(") = %d\n", PrimeSum(m, n));
return 0;
}
/* 你的代碼將被嵌在這裏 */
輸入樣例:
-1 10
輸出樣例:
Sum of ( 2 3 5 7 ) = 17
解答:
int prime( int p ){
int i=2;
if(p>=2){
for(;i<=sqrt(p); i++){
if(0==(p%i)) break;
}
if(i>sqrt(p)) return 1;
else return 0;
}else{
return 0;
}
}
int PrimeSum( int m, int n ){
int sum = 0;
int i=m;
if(m<0)m=2;
for (i=m; i<=n; i++){
if(prime(i)!=0)
sum += i;
}
return sum;
}