C++语言程序设计

一维数组应用举例：
1． 筛法求素数（只能被1和自身整除的正整数是素数）。
用筛法求素数的基本思想是：把从1开始的、某一范围内的正整数从小到大顺序排列， 1不是素数，首先把它筛掉。剩下的数中选择最小的数是素数，然后去掉它的倍数。依次类推，直到筛子为空时结束。如有：
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
1不是素数，去掉。剩下的数中2最小，是素数，去掉2的倍数，余下的数是：
3 5 7 9 11 13 15 17 19 21 23 25 27 29
剩下的数中3最小，是素数，去掉3的倍数，如此下去直到所有的数都被筛完，求出的素数为：
2 3 5 7 11 13 17 19 23 29
写程序时，采用一个数组，用数组的下标表示自然数，如果一个数不在筛中就将其对应的元素值赋0，如果仍在筛中，则那个元素值为1，程序如下：

| 例6-4

#define RANGE 200
#include <stdio.h>
void main(void)
{
int sieve[RANGE + 1];
int i,j,count;
for(i = 0;i <= RANGE;i ++)
sieve[i] = 1;//初始化
sieve[0] = sieve[1] = 0;//0和1不是素数
count = 0;
for(i = 2;i <= RANGE;i ++)
if(sieve[i] == 1)//i是素数
{
printf("%5d",i);//输出素数
count ++;
if(count % 8 == 0)//每行输出8个值
printf("\n");
for(j = i;j <= RANGE; j += i)
sieve[j] = 0;//筛去i的倍数
}
printf("\n");
}

运行结果：
2 3 5 7 11 13 17 19
23 29 31 37 41 43 47 53
59 61 67 71 73 79 83 89
97 101 103 107 109 113 127 131
137 139 149 151 157 163 167 173
179 181 191 193 197 199