C语言输入m,n求m到n之间所有素数的和(最好是用定义isprime和sum函数的形式)

我编写的代码:


#include<stdio.h>
#include<math.h>
int isPrime(int m,int n)
{
    int i, k;
    k = (int)sqrt(n);
    for (i = m; i <= n; i++)
    {
        if (k % i == 0)
            return(0);
    }
    return(1);
}
int sum(int m, int n)
{
    int i, s=0;
    for (i = m; i <= n; i++)
        if (isPrime(m,i) == 1)
            s = s + i;
    return(s);
}
int main(void)
{
    int s, m, n;
    scanf_s("%d%d", &m,&n);
    s = sum(m,n);
    printf("%d", s);
    return 0;
}

修改处见注释,供参考:

#include<stdio.h>
#include<math.h>
int isPrime(int n)  //int isPrime(int m,int n)
{
    int i, k;
    if (n <= 3)   return n > 1;
                   //k = (int)sqrt(n);
    for (i = 2; i * i <= n; i++) //for (i = m; i <= n; i++)
    {
        if (n % i == 0)   //(k % i == 0)
            return(0);
    }
    return(1);
}
int sum(int m, int n)
{
    int i, s=0;
    for (i = m; i <= n; i++)
        if (isPrime(i) == 1) //(isPrime(m,i) == 1)
            s = s + i;
    return(s);
}
int main(void)
{
    int s, m, n;
    scanf_s("%d%d", &m,&n);
    s = sum(m,n);
    printf("%d", s);
    return 0;
}