c++ 动态数组问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 23:30:17
1.掌握动态数组的用法
下列程序的功能是根据埃拉托斯特尼筛法求2至1000的素数。
#include <iostream>
using namespace std;
#define MAX_NUM 1000
void main()
{
unsigned char sieve[MAX_NUM+1];
long i, j, k=0;

for (i=2; i <= MAX_NUM; i++) //将全部数放进筛子
sieve[i] = 1;
for (i=2; i <= MAX_NUM; i++)
{
if (sieve[i] == 1) //如果i在筛子里,也即i是素数
{
k++;
cout << i << ","; //打印素数
if (k % 15 == 0) //每打印15个素数换一行
{
cout << endl; //打印素数
k = 0;
}
for (j=i*i; j <= MAX_NUM; j += i) //将素数i的倍数从筛子中取出
sieve[j] = 0;
}
}
cout << endl;
}
按下面的两条要求,修改上述程序。
(1). 将上述程序中的sieve数组改为用指针实现的动态数组,从而实现用筛法查找任意范围(在程序运行时确定)的素数的功能.
(2). 本着高内聚,低耦合的思想将上述程序改为由findPrime(),printPrime()和main()三个函数实现。

unsigned char sieve* = (char*)malloc(你要求的素数范围运行时确定的那个数); 接下来完全一样.
关于第二个问题嘛,你把几个循环根据要求写成函数就好了.