(c++程序)求指定范围内所有素数(分全压了,只求遇到好心人了~,55)

来源:百度知道 编辑:UC知道 时间:2024/05/22 07:55:24
[题目]
建立一个类Prime,求指定范围内所有素数。素数的定义是“只能被1和它本身整除”,素数也称为质数。具体要求如下:
(1)私有数据成员。
●int data[200]:依次存放指定范围内的所有素数。
●int min,max:存放待求素数的数值范围的下限和上限。
●int num:存放min和max之间的素数的个数。
(2)公有成员函数。
●Prime(int n1, int n2):构造函数,用n1和n2分别初始化min和max,并将num的值初始化为0。
●void process( ):求指定范围内的所有素数,把它们存放在数组data中。求素数的算法必须是:首先将min与max之间的所有奇数依次放入数组data中,然后依次判断data中的每一个元素是否为素数。若不是素数,则将其值赋为0。最后,数组data中不为0的元素均为素数。将该数组中不为0的元素值集中连续存放到数组的前面,同时统计素数个数。
●void show(fstream &):输出求出的所有素数,同时输出素数的个数。
(3)在主程序中完成对该类进行测试。定义一个Prime类的对象test,并用待求素数范围(范围数据[10,200]放在输入的数据文件中),初始化test中的min和max。通过test调用成员函数求出10至200之间的所有素数,并输出结果。用户还可以自行选择输入文件数据,完成测试工作。
[要求]
将源程序取名为cd225.cpp,程序中使用的数据皆放在文件名为data.txt中,并使用C++读取文件的方式输入程序中需要的数据,最后程序运行的结果同时以2种方式输出:①屏幕显示方式和②文件的形式存放在文件名为result.txt中,以上3个文件皆放在学号姓名文件夹下,供阅读、运行使用。

----------VC6.0测试通过----加了部分注释--------------------
//Prime.h
#ifndef PRIME_H_
#define PRIME_H_
#include <fstream>
using namespace std;
class Prime
{
public:
Prime(int n1,int n2);
~Prime();
void Process();
void Show(fstream& ofile);
private:
int min,max,num;
int data[200];
bool IsPrime(int elem);
//unsigned long fn(int n);
};
#endif//PRIME_H_

//Prime.cpp

#include <iostream>
#include <fstream>
#include "Prime.h"

using namespace std;

Prime::Prime(int n1,int n2)
:max(n2),min(n1),num(0)
{}

Prime::~Prime()
{}
/********一个定理***********
unsigned long Prime::fn(int n)
{
unsigned long sum(0);
if(n==0)
return 1;
else
{
sum=n*fn(n-1);
return sum;
}

}

bool Prime::IsPrime(int elem)
{
if((fn(e