档案袋标准多少克:以下这个C++编程不太明白,这是一道“用筛选法求100以内的素数”。可以分析下吗?

来源:百度文库 编辑:高考问答 时间:2024/04/28 00:11:01
编程如下:
#include<iostream.h>
void main()
{
int a[101];
for (int i=1;i<101;i++)
{
a[i]=1;
for (i=2;i<101;i++)
{
if (a[i]!=0)
for (int j=i+1;j<101;j++)
{
if (j%i==0)
a[j]=0
}
}
}
for (i=2;i<101;i++)
if (a[i]!=0)
cout<<i<<" ";
}

为什么要定义a[i]=1、a[j]=0,
又为什么要定义if (a[i]!=0)
这三都之间是什么关系?

首先定义a[i]=1是初始化数组,全部初始化为1,以后会有0,而1则为素数,0就不是.而定义的a[101],定义了101个空间,但不可能有101个素数.
第2:里面的双重循环,主要是这样:一个数,比如说20,那么就要把,从2~19全部被20除,如果除进,那么就不是素数,那么就标志为0,

if(a[i]!=0)
以后凡是为0的,都不是素数,要不为0而为1才是素数

#include<iostream.h>
void main()
{
int a[101];初始化数组
for (int i=1;i<101;i++)
{
a[i]=1;
for (i=2;i<101;i++)
{
if (a[i]!=0)
for (int j=i+1;j<101;j++)
{
if (j%i==0)
a[j]=0
}
}
}
for (i=2;i<101;i++)
if (a[i]!=0)
cout<<i<<" ";
}

这个程序写得太差!!!不明白也罢。