遇到的问题:
- 做题时提交了从
#include <stdio.h>
到末尾函数定义的全段代码,编译错误:main()函数重定义。原来只提交两个自写函数的定义代码段即可,不过编译器给出警告说用户忽视了函数scanf()的返回值,这是出题者所给的前驱代码引起的。。。
题目代码:
int prime( int p );
/*判断整数p是否为素数,是返回1,不是返回0*/
int PrimeSum( int m, int n );
/*返回闭区间[m,n]上所有素数之和(题目保证m<=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));
// 手动调试自写函数
// printf("%d\n", prime(7));
// printf("%d\n", PrimeSum(-1, 10));
return 0;
}
int prime(int p){
int isPrime=1;
int i;
if(p<2){
isPrime = 0;
}
else{
for(i=2; i<=(int)sqrt(p); i++){
/*若p为合数,则必有不大于sqrt(p)的因子*/
if(p%i == 0){
isPrime = 0;
break;
}
}
}
return isPrime;
}
int PrimeSum( int m, int n ){
int sum=0;
int i;
for(i=m; i<=n; i++){
if(prime(i)){
sum += i;
}
}
return sum;
}