首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

生手求教!为什么输出的数据很乱

2012-09-11 
新手求教!为什么输出的数据很乱?100以内的质数:#include stdio.hvoid main(){int a,bfor(a2a100a+

新手求教!为什么输出的数据很乱?
100以内的质数:
#include "stdio.h"
void main()
{
int a,b;
for(a=2;a<=100;a++)
{for(b=2;b<=a;b++)
if(a%b==0) break;
printf("%d ",b);
  }
printf("\n");
}
为什么我运行出来有N多个数,而且很多都不符合要求

[解决办法]
上网搜索:质数算法
[解决办法]

C/C++ code
    int a,b;    for(a=2;a<=100;a++)    {        for(b=2;b<=a;b++)        {            if(a%b == 0)                 break;        }        if(b>=a) //表示b是走完上面的循环 而不是break出来 才是质数            printf("%d ",b);    }    printf("\n");
[解决办法]
//你的逻辑是错误的,2楼已帮你修改好
for(a=2;a<=100;a++) //遍历2-100
{
for(b=2;b<=a;b++) //这个循环是除所有小于当前值的数
if(a%b==0) break; //如果能被整除则停止循环
printf("%d ",b); //打印b,这里就是不管上循环执行到哪一步都打印了b,即使a不是素数。这个打印的b就是错误的数据。当当前值是素数时,上循环一定是执行到b=a的,否则执行不到即b<a。接下来通过if(b>=a)来打印相应的素数。也就是if(b>=a)printf("%d\n",a);
}
[解决办法]
break是跳出循环,不执行其一下的语句。所以说如果一旦a%b==0就表明a不可能是质数。
所以写到这里,你的思路是正确的。
下面你开始思考如何把质数打印出来,于是你出现了混乱,你的想法是如果a是质数,就打印出来,那么如何表明a是质数了,很简单,就是a%b==0这个条件一直没满足,于是:
C/C++ code
for(b=2;b<=a;b++)        {            if(a%b == 0)                 break;        } 

热点排行