标题:輸出101~200之間的素數﹐中間碰到一個回車問題﹐請高手幫忙解釋﹗
只看楼主
a476644693
Rank: 2
等 级:论坛游民
帖 子:31
专家分:29
注 册:2011-8-2
结帖率:100%
已结贴  问题点数:20 回复次数:11 
輸出101~200之間的素數﹐中間碰到一個回車問題﹐請高手幫忙解釋﹗
程序代码:
#include <stdio.h>
void main()
{ int i,j,count1=0,count2=0;
  for(i=101;i<=200;i++)
   { for(j=2;j<=i-1;j++)  /*除以從2開始一直到它本身的前一個*/
      if(i%j==0) count1++; /*如果除的盡就計數count1++*/
     if(count1==0) /*如果從2開始一直到它本身的前一個﹐沒一個能除盡﹐就輸出*/
      { printf("%d ",i);
        count2++;/*統計結果次數*/
        if(count2%10==0) printf("\n");/*結果每十個一行*/
        }
     count1=0;/*初始化計數count1,因為循環一次count1已經變了*/
    }
   printf("\ntotal:%d",count2);
   getch();
   }
上面的代碼是正確的﹐我想問下如果把" if(count2%10==0) printf("\n");/*結果每十個一行*/"這一行放到大括號外面﹐結果就多輸出一個回車﹐求解釋﹗
PS﹕
   if(count1==0) /*如果從2開始一直到它本身的前一個﹐沒一個能除盡﹐就輸出*/
      { printf("%d ",i);
        count2++;/*統計結果次數*/
        }
       if(count2%10==0) printf("\n");/*結果每十個一行*/
     count1=0;/*初始化計數count1,因為循環一次count1已經變了*/
    }
這樣每十個一行時﹐輸出有兩個回車﹐如果把那一行代碼放到括號里就只有一個回車﹐求高手解釋﹗
搜索更多相关主题的帖子: 200 101 
2011-11-08 12:38
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6809
专家分:42393
注 册:2010-12-16
得分:3 
你是台湾的吗

我行我乐
我的博客:
http://blog.yuccn. net
2011-11-08 12:49
luchar
Rank: 9Rank: 9Rank: 9
来 自:南京
等 级:蜘蛛侠
帖 子:279
专家分:1263
注 册:2011-11-3
得分:14 
因为,当count2为10的时候,i是147 ,这个时候输出一个回车,当i加1成148的时候,不是素数,count2就没有加一,还是10,而这个时候还是满足if条件,就输出回车,到了第20的时候,也是相同的,刚好巧合,这两个素数之间都只隔了一个数,如果你换成每5个数一行,就能明白了。
当输出回车的判断条件不在大括号里面的时候,就是不是素数,也要判断count2%10==0是否成立。
2011-11-08 13:10
wuyijiang07
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:74
专家分:177
注 册:2011-10-21
得分:3 
三楼正解,不是素数也会判断是否满足输出\n的条件
2011-11-08 13:17
a476644693
Rank: 2
等 级:论坛游民
帖 子:31
专家分:29
注 册:2011-8-2
得分:0 
  OK,謝謝﹗我開始試了下﹐如果不是與10取余的話﹐回車會更多﹐于是
把它包含在if里面﹐結果正確﹐就沒細想了﹐我看執行順序是相同的﹐感謝
各位解答疑惑﹗
  PS﹕我是在台資公司上班﹐別誤解﹗
2011-11-08 14:39
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
得分:0 
程序代码:
#include <stdio.h>

bool foot[1000] = {0};
int main()
{
    int i,j,k;
    for(i = 2;i<1000;i++)
    {
        if(!foot[i])
        {
            printf("%d\n",i);
            for(j = 2;i*j<1000;j++)
                foot[i*j] = 1;
        }
    }
    return 0;
}
输出2--999之间的素数  这个效率很高 希望楼主能学习一下 很简答的散列表

                                         
===========深入<----------------->浅出============
2011-11-08 15:00
lastrobber
Rank: 2
来 自:廊坊
等 级:论坛游民
帖 子:26
专家分:52
注 册:2010-12-30
得分:0 
回复 6楼 laoyang103
为什么我编译不过去呢,说是语法错误
2011-11-08 17:23
心灵百合
Rank: 5Rank: 5
等 级:职业侠客
帖 子:215
专家分:367
注 册:2011-3-30
得分:0 
#include"stdio.h"

int main()
{
    int i,j,count=0;

    for(i=101;i<=200;i++)
    {
        for(j=2;j<i;j++)
        {
            if(i%j==0)
                break;
        }
        if(i==j)
        {
            printf("%5d",i);
            count++;   //计数器
            if(count%10==0)
                printf("\n");
        }
    }
    printf("\n共 %d 个素数!",count);
    return 0;
}
2011-11-08 18:48
a476644693
Rank: 2
等 级:论坛游民
帖 子:31
专家分:29
注 册:2011-8-2
得分:0 
回复 6楼 laoyang103
bool foot[1000] = {0};
bool是库函数吗,但没include啊,如果是自定义函数,又没有具体说明,不同!
我用的是win-tc编译软件,提示:错误 noname.c 3: 说明语法错误!
希望你能备注下,教教新手!
2011-11-08 20:04
a476644693
Rank: 2
等 级:论坛游民
帖 子:31
专家分:29
注 册:2011-8-2
得分:0 
回复 8楼 心灵百合
感觉你的不错,思维是一样的,但你编写的效率高,而且简单多了,学习了!
2011-11-08 20:05



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




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

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