标题:求100到200所有的素数
只看楼主
b1592187525
Rank: 1
等 级:新手上路
帖 子:86
专家分:4
注 册:2017-2-15
结帖率:90.32%
已结贴  问题点数:20 回复次数:2 
求100到200所有的素数
求100到200之间的所有素数,当我把if(a>j)改为else时,编译器运行结果如下:
有3个问题.
为什么这里不能改为else?
改为else时,为什么编译结果有那么多重复的数?
而且不能满足输出10个数就换行的要求?
#include"math.h"
#include"stdio.h"
#include"stdlib.h"
main(){
    int i,j,a,n;
    n=0;
    for(i=101;i<200;i+=2){   
    if(n%10==0)
    printf("\n");
    j=sqrt(i);
    for(a=2;a<=j;a++)
    if(i%a==0)
    break;
    if(a>j)        //当我把这行改为else
    {
    printf("%d  ",i);
    n++;
    }
    }
    system("pause");
}
搜索更多相关主题的帖子: 编译器 include 而且 
2017-03-10 17:02
育帝
Rank: 2
来 自:黑龙江哈尔滨
等 级:论坛游民
帖 子:75
专家分:43
注 册:2016-10-16
得分:10 
首先else 是if外的所有情况,比如a==0,那么else外的就是a!=0
次之,else是与离他最近的if为一个对应。
最后你在想想试试吧

育帝
2017-03-10 17:17
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:10 
程序代码:
#include"math.h"
#include"stdio.h"
#include"stdlib.h"

void main()
{
    int i,a,n;
    n=0;
    for(i=101;i<200;i+=2)
    {   
        if(n%10==0)    printf("\n");
        double j=sqrt((double)i);
        for(a=2;a<=(int)j;a++)
        {
            if(i%a==0)    break;
        }
        if(a>j)        //当我把这行改为else
        {
            printf("%d  ",i);
            n++;
        }
    }
    system("pause");
}
101  103  107  109  113  127  131  137  139  149
151  157  163  167  173  179  181  191  193  197
199  请按任意键继续. . .

DO IT YOURSELF !
2017-03-10 20:36



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-474938-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.133066 second(s), 9 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved