//楼主判定"素数"的算法需要改善,可参考其他网友的算法.
#include
#include
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 m=p;
while(m>1)
{
m--;
//在函数prime里,如果p是素数,当循环到m等于2,在执行m--之后,m就等于1,
//再执行if(p%m==0),必然return 0
//所以,在m--之后,增加一句if(1==m) return 1;
if(1==m)
{
return 1;
}
if(p%m==0)
{
return 0;
}
}
return 1;
}
int PrimeSum( int m, int n )
{
int result=0;
for(m;m<=n;m++)
{
if(prime(m)!=0)
result=result+m;
}
return result;
}
