习题5-4 使用函数求素数和(20 分) 本题要求实现一个判断素数的简单函数、以及利用该函数计算给定区间内素数和的函数。
素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。
函数接口定义: 1 2 int prime( int p ); int PrimeSum( int m, int n );
其中函数prime
当用户传入参数p
为素数时返回1,否则返回0;函数PrimeSum
返回区间[m
, n
]内所有素数的和。题目保证用户传入的参数$m \le n$。
裁判测试程序样例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 #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 ; } int prime ( int p ) { int i; int k; if (p>=2 ) { k=sqrt (p); for (i=2 ;i<=k;i++) { if (p%i==0 ) break ; } if (i>k) return 1 ; else return 0 ; }else return 0 ; } int PrimeSum ( int m, int n ) { int i,z,sum=0 ; int k; for (z=m;z<=n;z++) if (prime(z)==1 ) sum=sum+z; return sum; }