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

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

2012-12-29 
帮忙看看我写的筛选法求1-100以内的素数#includestdio.h#includemath.hvoid main(void){int i,j,t0,a

帮忙看看我写的筛选法求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被跳过了

热点排行