用c语言中的while语句编写素数程序

把for语句改为while语句为啥我的出错了、求大神指教!
#include <stdio.h>
void main( )
{
int a;
int i;
for(a=50;a<100;a++)
{
for(i=2;i<a;i++)
if(a%i==0) break;
if(i>=a) printf(" %d\n",a);
}
}
这是for函数!
下面是我改的while函数、结果就出错了
#include <stdio.h>
void main( )
{
int a;
int i;
a=50;
i=2;
while(a<100)
{
while(i<a)
{
if(a%i==0) break;
i=i+1;
}
if(i>=a-1) printf("%d\n",a);
a=a+1;
}
}
求大神看看我的while语句哪里出错了

#include <stdio.h>
void main( )  

int a;
  int i; 
  a=50;
  i=2;
  while(a<100)
  {
       while(i<a)
          {
             if(a%i==0) break;  
              i=i+1;
           }
              if(i>=a-1) printf("%d\n",a);
             a=a+1;
             i=2;   //记得在while循环中对i初始化!!
      }
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-04-17
这位同学,for循环是会初始化i的值,比如上面每次到里面的循环,就会初始化i=2,但是你用while,没有主动去初始化i,所以就会出错。