帮忙看看小弟我写的筛选法求1-100以内的素数

帮忙看看我写的筛选法求1-100以内的素数
帮忙看看小弟我写的筛选法求1-100以内的素数#include<stdio.h>
#include<math.h>
void main(void)
{
  int i,j,t=0,a[100];
  for(i=0;i<=99;i++)//将1-100的值赋给a[100]
  a[i]=i+1;
  for(i=1;i<=sqrt(100)-1;i++)
  {
  
   if(a[i]==0)//如果a[i]=0,i加1
      i+=1;
   else
   for(j=i+1;j<=99;j++)/*如果a[i]不等于0,就从a[i+1]到a[99]里面挑出能够整除
   a[i]的数,给他们标记为0*/
   {
   if(a[j]!=0 && a[j]%a[i]==0)
   a[j]=0;
   }
  }
  for(i=0;i<=99;i++)
  if(a[i]!=0)//如果a[i]不为0,就输出a[i]
  printf("%d ",a[i]);

}
程序输出不正确,输出里面含有合数.
------解决方案--------------------

楼主
   if(a[i]==0)//如果a[i]=0,i加1
      i+=1;
应把 i+=1;换成 continue;

因为你在for中已经加了1了。 当i等于4时,执行完i+=1; i变为5,之后再次进入循环,被for语句中再加一次
变成了6。5被跳过了