本題要求實現(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當用戶傳入?yún)?shù)p為素數(shù)時返回1即彪,否則返回0紧唱;函數(shù)PrimeSum返回區(qū)間[m,?n]內(nèi)所有素數(shù)的和活尊。題目保證用戶傳入的參數(shù)m≤n。
裁判測試程序樣例:
#include<stdio.h>
#include<math.h>
intprime(intp );
intPrimeSum(intm,intn );
int main()
{
? ? intm, 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));
? ? return0;
}
/* 你的代碼將被嵌在這里 */
輸入樣例:
-1 10
輸出樣例:
Sum of ( 2 3 5 7 ) = 17
int prime( int p ){
? ? int i,count=0;
? ? if(p<=1) return 0;
? ? else if(p==2) return 1;
? ? else{
? ? ? ? for(i=2;i<=pow(p,0.5);i++){
? ? ? ? if(p%i==0)
? ? ? ? count ++;
? ? }
? ? if (count ==0) return 1;
? ? else return 0;
? ? }
}
int PrimeSum( int m, int n ){
? ? int i,s=0;
? ? for(i=m;i<=n;i++)
? ? if(prime(i)==1)
? ? s=s+i;
? ? return s;
}
first try
超時讓人難受漏益。蛹锰。
對p的整除從p到p/2到pow(p,0.5)