一道C语言编程题

题目是求2~100以内所有的素数,并保存在数组a。刚入门打得输出不一样,望赐教~#include<stdio.h>#include<math.h>intmain(void... 题目是求2~100以内所有的素数,并保存在数组a。刚入门打得输出不一样,望赐教~

#include <stdio.h>
#include <math.h>
int main(void)
{
int i,n,a[100],k=0;
for(i=2;i<=100;i++)
{
for(n=2;n<=(int)sqrt(i);n++)
if(i%n==0) break;
else a[k++]=i;
printf("%d\n",i);
}
return 0;
}
展开
 我来答
风若远去何人留
2018-01-02 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450133
专业C/C++软件开发

向TA提问 私信TA
展开全部
#include <stdio.h>
#include <math.h>
int main(void)
{
int i,n,a[100],k=0;
for(i=2;i<=100;i++)
{
for(n=2;n<=(int)sqrt(i);n++)
if(i%n==0) break;

if(n>(int)sqrt(i))a[k++]=i;//循环后 再赋值a[k++], 其实在这里a[k++]没有作用. 要起作用,下面可以修改为
}
for(i = 0; i < k; i ++)
    printf("%d ", a[i]);
return 0;
}

其实可以不用数组的

#include <stdio.h>
#include <math.h>
int main(void)
{
    int i,n;
    for(i=2;i<=100;i++)
    {
        for(n=2;n<=(int)sqrt(i);n++)
            if(i%n==0) break;
        if(n>(int)sqrt(i))
            printf("%d\n",i);
    }
    return 0;
}
White_MouseYBZ
2018-01-02 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6664万
展开全部
else a[k++]=i;——这里逻辑错了,改成if(n>(int)sqrt(i)){ a[k++]=i; printf("%d\n",i);}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式