小鸟游菜花 2022-02-02 14:08 采纳率: 84.6%
浏览 37
已结题

这里哪里有问题吗,为什么部分正确

img


#include<stdio.h>
int main()
{
    int a;
    scanf("%d",&a);
    int j=2,sum=0,k,n=0;
    int d[1000],l=0;
    while(1)
    {
        for(k=2;k<=j;k++)
        {
            if(j%k==0)
            break;
        }
        if(j==k)
        {
            sum=sum+j;
            n++;
            printf("%d\n",j);
        }
        if(sum>=a)
        break;
        else
        j++;
        
    }
    printf("%d",n);
    return 0;
}

img

img

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2022-02-02 14:41
    关注

    供参考:

    #include<stdio.h>
    int isprime(int n)
    {
        int i;
        if (n <= 3)return n > 1;
        for (i = 2; i * i <= n; i++)
            if (n % i == 0)  return 0;
        return 1;
    }
    int main()
    {
        int a;
        scanf("%d", &a);
        int sum = 0, k = 2, n = 0;
        while (sum < a)
        {
            if (isprime(k))
            {
                sum += k;
                n++;
                printf("%d\n", k);
            }
            k++;
        }
        printf("%d", n);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月16日
  • 已采纳回答 2月8日
  • 创建了问题 2月2日