本题要求实现一个判断素数的简单函数、以及利用该函数计算给定区间内素数和的函数 我这哪错了 求大神

其中函数prime当用户传入参数p为素数时返回1,否则返回0;函数PrimeSum返回区间[mn]内所有素数的和。题目保证用户传入的参数mn

#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;
}