P1Lawrence 2022-04-22 22:27 采纳率: 33.3%
浏览 86

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;
}
  • 写回答

1条回答 默认 最新

  • qzjhjxj 2022-04-23 11:24
    关注

    修改处见注释,供参考:

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

报告相同问题?

问题事件

  • 创建了问题 4月22日