标题:每行输出10个,第一行怎么是9个?
只看楼主
dydsdyds
Rank: 6Rank: 6
来 自:Java
等 级:侠之大者
帖 子:217
专家分:457
注 册:2010-2-14
结帖率:81.82%
已结贴  问题点数:4 回复次数:6 
每行输出10个,第一行怎么是9个?
这道要求输出100内的所有素数的程序,
经过“广陵绝唱”的帮助,已经做出来拉。谢谢你!

程序代码:
/*用筛选法求100之内的素数,每行输出10个。*/
#include<stdio.h>
main()
{
    int i,a,x=100,y=0;
    for(a=2;a<=x;++a)
    {
        for(i=2;i<a;++i)
        {
            if(a%i==0)
                break;
        }
        if(i==a)
        {
            y=y+1;
            printf("%d",a);
            if(y%10==0)
                printf("\n");
            else
                printf(" ");
        }
    }
}



[ 本帖最后由 dydsdyds 于 2010-2-17 17:12 编辑 ]
搜索更多相关主题的帖子: 每行 输出 
2010-02-17 08:56
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
得分:4 
素数是除了 1 和它本身之外,不会被任意的数整除.所以,想要求出 n 是不是素数,只需要:

    for(i=2;i<n;++i)
    {
        if(n%i==0)
        {
            break;
        }
    }
    if(i<n)
    {
        puts("不是素数");
    }
    else
    {
        puts("是素数");
    }
   
    但是这样判断也有点麻烦,只要是在平方根范围内没有数整除,就可以判断它为素数,所以可以这样:


    m=sqrt(n);
    for(i=2;i<=m;++i)
    {
        if(n%i==0)
        {
            break;
        }
    }


========================================================================

    祝您学 C 愉快,新年快乐.
2010-02-17 09:15
dydsdyds
Rank: 6Rank: 6
来 自:Java
等 级:侠之大者
帖 子:217
专家分:457
注 册:2010-2-14
得分:0 
回复 2楼 广陵绝唱
在这还有点不明白,如果我输入n=5,循环过程是
i=2;i=3;i=4;i=5;吗?
完了呢?++i自增加到几?
如果改为for(i=2;i<n;i++)
i++自增到几?
素数是除了 1 和它本身之外,不会被任意的数整除.所以,想要求出 n 是不是素数,只需要:

    for(i=2;i<n;++i)
    {
        if(n%i==0)
        {
            break;
        }
    }


c语言刚开一学期,就换开VB...
2010-02-17 09:33
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
得分:0 
for 中, ++i 和 i++ 对循环本身没有影响,只是一般来说, ++i 比 i++ 的运算速度要快(只是理论上或者是微小的差距).

如果想控制输出行数,只需要再建立一个变量 x ,每输出一个素数时 ++x ,当 x%10==0 时,printf("\n"); 就可以了.
2010-02-17 10:58
dydsdyds
Rank: 6Rank: 6
来 自:Java
等 级:侠之大者
帖 子:217
专家分:457
注 册:2010-2-14
得分:0 
大家再帮忙提醒一下……
还是不会,如题。

c语言刚开一学期,就换开VB...
2010-02-17 15:53
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
得分:0 
下面写了一段代码,您参考一下吧:

程序代码:
#include<stdio.h>
#include<math.h>
#define N  100

int main(void)
{
    int i,m,n,t;

    for(t=0,n=2;n<N;++n)
    {
        if(n==2||(n!=2&&n%2!=0))
        {
            m=sqrt(n);
            for(i=2;i<=m;++i)
            {
                if(n%i==0)
                {
                    break;
                }
            }
            if(i>m)
            {
                printf("%3d%c",n,++t%10==0?'\n':' ');
            }
        }
    }

    puts("");

    return 0;
}
2010-02-17 16:25
dydsdyds
Rank: 6Rank: 6
来 自:Java
等 级:侠之大者
帖 子:217
专家分:457
注 册:2010-2-14
得分:0 
回复 6楼 广陵绝唱
谢谢,
虽然还有好多的地方不懂,
但经过提醒,已经有点思路了。

c语言刚开一学期,就换开VB...
2010-02-17 16:34



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




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

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