其中函数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(int p) != 0 )
printf("%d ", p);
}
printf(") = %d\n", PrimeSum(m, n));
return 0;
}
int prime(int p){
int m,n,i;
for(p=m;p<=n;p++)
for(i=2;i<n/2+1;i++)
if(p%i==0)
return 0;
if(i>=n/2+1)
return 1;
}
int PrimeSum( int m, int n ){
int p,sum = 0;
for(p=m;p<=n;p++)
if(prime(int p ) == 1)
sum = sum + p;
return sum;
}
有两个地方 if( prime(int p) != 0 ) 改为 if( prime(p) != 0 )
if(prime(int p ) == 1)改为if(prime(p ) == 1)
修改如下,供参考:
#include <stdio.h>
//#include <math.h>
int prime( int p );
//int PrimeSum( int m, int n );
int main()
{
int m, n, p,sum=0;
scanf("%d %d", &m, &n);
printf("Sum of ( ");
for( p=m; p<=n; p++ ) {
if( prime(p)){ //if( prime(int p) != 0 )
printf("%d ", p);
sum += p;
}
}
printf(") = %d\n",sum); //PrimeSum(m, n));
return 0;
}
int prime(int p)
{
int i; //m,n,
if(p<=3) return p>1; //for(p=m;p<=n;p++)
for(i=2;i*i<=p;i++)
if(p%i==0) return 0;
//if(i>=n/2+1)
return 1;
}
/*int PrimeSum( int m, int n ){
int p,sum = 0;
for(p=m;p<=n;p++)
if(prime(int p ) == 1)
sum = sum + p;
return sum;
}*/
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
错误比较多啊,给改写一下,可以运行了,参考一下把
#include <stdio.h>
#include <math.h>
bool 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) )
printf("%d ", p);
}
printf(") = %d\n", PrimeSum(m, n));
int k;
scanf("%d",&k);
return 0;
}
bool prime(int p){
int i;
for(i=2;i<p/2+1;i++)
if(p%i==0)
return false;
return true;
}
int PrimeSum( int m, int n ){
int p,sum = 0;
for(p=m;p<=n;p++)
if(prime(p))
sum = sum + p;
return sum;
}