编写程序 输入两个正整数m和n(1<=m<n<=500),统计并输出m和n之间素数个数及这些素数的和,

要求定义并调用函数prime(n)判断n是否为素数。
以下是我的代码,请问哪里出错了?
#include <stdio.h>
int main(void)
{
int i,m,n;
int count=0;
int sum=0;
int prime(int n,int i);
printf("输入两个正整数m和n(1<=m<=n<=500):\n");
scanf("%d%d",&m,&n);
if(m<1||n>500)
printf("Error!\n");
else
{
for(i=m;i<=n;i++)
{
if(prime(n,i)==1)
{
count++;
sum+=i;
}
}
printf("%d到%d之间的素数个数=%d,素数和=%d\n",m,n,count,sum);
return 0;
}
}
int prime(int n,int i)
{
for(i=2;i<=n;i++)
if(n%i==0) return(0);
else
return(1);
}

int prime(int i)
{int j;
if(i==1)
return 0;
for(j=2;j<=i;j++)
{if(i%j==0)
{return 0;}}
return 1;}
因为对于任何数i,i%i总是等于0的。循环的终止条件应该是j<i或者j*j<=i。
温馨提示:答案为网友推荐,仅供参考
相似回答