用C++编写程序,生成一个二进制数据文件,将n~m之间的所有素数写入文件data.dat中。从数据文件中读取二进制数据,并在显示器上以每行10个数的形式显示。
时间: 2024-02-15 19:06:16 浏览: 183
以下是 C++ 代码实现:
```c++
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
bool isPrime(int n) {
if (n <= 1) return false;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) return false;
}
return true;
}
void writePrimesToFile(int n, int m) {
ofstream fout("data.dat", ios::out | ios::binary);
for (int i = n; i <= m; i++) {
if (isPrime(i)) {
fout.write((char*)&i, sizeof(int));
}
}
fout.close();
}
void readPrimesFromFile() {
ifstream fin("data.dat", ios::in | ios::binary);
int count = 0;
while (!fin.eof()) {
int prime;
fin.read((char*)&prime, sizeof(int));
if (isPrime(prime)) {
cout << prime << " ";
count++;
if (count % 10 == 0) cout << endl;
}
}
fin.close();
}
int main() {
writePrimesToFile(3, 100);
readPrimesFromFile();
return 0;
}
```
首先是 `isPrime` 函数,用于判断一个数是否为素数。
然后是 `writePrimesToFile` 函数,用于将 n~m 之间的所有素数写入二进制数据文件 `data.dat` 中。使用 `ofstream` 类以二进制方式写入整数。
最后是 `readPrimesFromFile` 函数,用于从数据文件中读取二进制数据,并以每行10个数的形式显示。使用 `ifstream` 类以二进制方式读取整数,并调用 `isPrime` 函数判断整数是否为素数。
阅读全文