把2~100内的质数存放到数组a[]里的C++程序

编一个C++程序,把2~100内的质数存放到数组a[]里。小弟找出2~100内的质数很容易就编好了,但是存到数组a[]里不会编,编出来总是质数和数组号重复发现,可能循环没套好。请达人解决,谢谢!
#include <stdio.h>
#include <math.h>
int boul (int x);
void main ()
{
int i,j,k=0,a[100];
printf ("从1到100的素数有:\n");
for (i=1,j=0;i<=100;i++)
if (boul(i)==1)//排除1
{
a[j]=i;//存放到数祥卜组a[]里
k++;//计数明备
j++;
}
for (i=0;i<k;i++)
printf ("%d ",a[i]);
printf ("\n");
}
int boul (int x)//判断2-1000的素数
{
int i;
if (x<=1)
return 0;
for (i=2;i<谨槐穗=sqrt(x);i++)
if (x%i==0)
return 0;
return 1;
}
索引的方法是比较弊者源简单的

#include<iostream>
#include<math.h>

using namespace std;

void main()
{
const int SIZE = 100;
int a[SIZE];
int b = sqrt(SIZE);
int ii, jj;

for (ii = 0; ii < SIZE; ++ii) {
a[ii] = 1;
}

for (ii = 2; ii <嫌亩 b; ++ii) {
for (jj = ii; jj <= SIZE/ii; ++jj) {
a[ii * jj] = 0;
}
}

for (ii = 2; ii < SIZE; ++ii) {
if (a[ii]) cout <租态< ii << " ";
}
}
#include "iostream.h"
void main()
{
int i,j,index;
for (i=2;i<=100;i++) //从手差2到100循环让薯瞎
{
index=1;
for (j=2;j<=i/2;j++)
{
if(i % j==0) index=0; //如果能整除,将标志设0
}
if (index==1) cout<<i<<坦空'\n'; //如果是质数,显示出来
}

}
#include <iostream.h>
void main()
{
int a{50}={0}; /拿誉枣/2到100中最多虚山50个质数
int i,j,index=0;
for (i=2;i<=100;i++) /消拆/从2到100循环
{
j=2;
while(j<=i/2&&i%j) j++;
if(j>i/2) a[index++]=i; //增加一个质数存入数组
}
}