统计素数并求和C语言

问题遇到的现象和发生背景

统计素数并求和
本题要求统计给定整数M和N区间内素数的个数并对它们求和。

输入格式:
输入在一行中给出两个正整数M和N(1≤M≤N≤500)。

输出格式:
在一行中顺序输出M和N区间内素数的个数以及它们的和,数字间以空格分隔。

用代码块功能插入代码,请勿粘贴截图

#include
#include
#include "自定义函数.h"

int panduansushu(int x);
int main() {
int m, n,sum=0,count=0;
scanf_s("%d %d", &m, &n);
for (; m <= n; m++) {
if (panduansushu(m) == 0)
{
sum += m;
count++;
}
}

}

int panduansushu(int x)
{
int i = 0;
int panduan = 0;
for (; i <= x/2; i++)
{
if (x % i == 0)
panduan = 1;
}
return x;
}

运行结果及报错内容

img

题主代码修改如下,供对照参考:

#include<stdio.h>
#include<math.h>
//#include "自定义函数.h"
int panduansushu(int x);
int main() {
    int m, n,sum=0,count=0;
    scanf("%d %d", &m, &n);
    for (; m <= n; m++) {
        if (panduansushu(m) == 0)
        {
            sum += m;
            count++;
        }
    }
    printf("count=%d,sum=%d",count,sum);  //修改
    return 0;
}
int panduansushu(int x)
{
    int i;   //i = 0; 修改
    int panduan = 0;
    if (x <= 1) return  1; //修改
    for (i = 2; i <= x/2; i++) //(; i <= x/2; i++) 修改
    {
        if (x % i == 0)
            panduan = 1;
    }
    return panduan; //return x; 修改
}


#include<stdio.h>
int main()
{
int m,n;
int cnt=0;
int sum=0;
scanf("%d %d",&m,&n);
if(m==1){
   m=2;
}
int i;
for(i=m,i<=n;i++){
   int isPrime=1;
   int k;
   for(k=2;k<i;k++){
      if(i%k==0){
         isPrime=0;
         break;
      }
   }
   if(isPrime){
      cnt++;
      sum+=i;
   }     
}
printf("%d %d",cnt,sum)
  return 0;
}