注册 登录
编程论坛 VC++/MFC

关于一个作业题,求素数

tianshilei 发布于 2010-10-31 12:28, 962 次点击
现在有一个作业题,是求3~100之间的素数的题,应该用到循环语句,但是我写了下面的代码,编译能够通过,就是只能输出3,请各位高手看看。
#include <stdio.h>
main()
{ int m,n=1,i,flag=1;
  for(m=3;m<=100;m++)
  { for(i=2;i<m;i++)
     if(m%i==0)
     { flag=0;
       i=m;
     }
     if(flag==1)
     { printf("%d ",m);
       n++;
     }
       if(n%10==0) printf("/n");
  }
}现在有一个问题就是,如果我写了一个if语句,然后假如条件为真,然后继续进行,就应该怎么写呢?
小的是初学者,希望各位高手们不要笑话。

[ 本帖最后由 tianshilei 于 2010-10-31 12:56 编辑 ]
9 回复
#2
slfzzhm2010-10-31 14:43
我也是初学者,我也想知道为什么
#3
shafeilong2010-10-31 19:12
#include <stdio.h>
void main()
{
    int m,n=1,i,flag=1;
    for(m=3;m<=100;m++)
    {
        flag =1;  //这里的flag 要重新赋值
        for(i=2;i<m;i++)
        if(m%i==0)
        {
            flag=0;
            i=m;
        }
        if(flag==1)
        {
            printf("%d ",m);
            n++;
        }
        if(n%10==0) printf("\n");  //虽然你很幽默  不过不是/n 而是\n
    }
}
#4
tianshilei2010-10-31 19:28
回复 3楼 shafeilong
请问为什么flag要重新赋值?
#5
山之子2010-11-01 16:09
回复 4楼 tianshilei
因为每次循环flags都要为1
#6
山之子2010-11-01 16:11
回复 5楼 山之子
是每次外循环时
#7
slfzzhm2010-11-05 22:20
回复 5楼 山之子
为什么要在循环里面对flag重新赋值啊?我也不懂啊....
#8
wangchunbao2010-11-20 20:09
不重新赋值的话,,3 后面的数 flag都是零了;就不会有任何输出了
#9
haipe2010-11-20 20:37
同意 3楼 蛋定  。楼主的错误
#10
C之家2010-11-20 20:40
程序在输出3之后,4的时候将flag赋值为0,如果没有重新赋值,那么之后的运算都是徒劳,flag始终是一,当然结果输出只有3了,在编写循环语句的时候赋值的顺序是尤为重要的      
1