c语言素数平方根之和

求3-n之间所有素数的平方根之和,我这个问题出在哪里啊

#include<stdio.h>
#include<math.h>
double fun(int n)
{
    int m,i,k;
    double sum=0;
    m=sqrt(i);
    for(i=3;i<=n;i++)
        {
            for(k=2;k<=m;k++)
                if(i%k==0)break;
            if(k>m)
            sum=sum+m*m;
        }
    return sum;
}
int main()
{
    int n;
    printf("输入大于2小于1000的数n=");
    scanf("%d",&n);
    printf("3-n之间所有素数的平方根之和=%lf",fun(n));
    return 0;
}

修改如下,供参考:

#include<stdio.h>
#include<math.h>
double fun(int n)
{
    int m,i,k;
    double sum=0;
                       //m=sqrt(i); 修改
    for(i=3;i<=n;i++)
        {
            for(k=2,m=sqrt(i);k<=m;k++)//for(k=2;k<=m;k++) 修改
                if(i%k==0)break;
            if(k > m)
                sum=sum+sqrt(i); //sum=sum+m*m; 修改 素数的平方根
        }
    return sum;
}
int main()
{
    int n;
    printf("输入大于2小于1000的数n=");
    scanf("%d",&n);
    printf("3-n之间所有素数的平方根之和=%lf",fun(n));
    return 0;
}

#include<stdio.h>
#include<math.h>

double fun(int n)
{
    int i, k;
    double sum = 0;
    for (i = 3; i <= n; i++)
    {
        int m = sqrt(i);
        for (k = 2; k <= m; k++)
            if (i % k == 0)
                break;
        if (k > m && i <= n)
            sum += m * m;
    }
    return sum;
}

int main()
{
    int n;
    printf("输入大于2小于1000的数n=");
    scanf("%d", &n);
    printf("3-n之间所有素数的平方根之和=%lf", fun(n));
    return 0;
}

如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

  • 你这是计算的是素数的平方之和吧,确定是要 素数的平方根之和 ???
  • 另外 m 的计算,你要放到 第一个for循环里呀,不然 i 都没有初始化

m=sqrt(i);是要闹哪样,i还没赋值呢,是个随机数,m也是个随机数