用c++编写程序,生成一个二进制数据文件,将n~m之间的所有素数写入文件data.dat中。从数据文件中读取二进制数据,并在显示器上以每行10个数的形式显示。
时间: 2024-02-03 20:12:57 浏览: 83
素数、二维数组键入、奇数存入二进制、读取文件数据
5星 · 资源好评率100%
以下是C++代码实现:
```c++
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
bool isPrime(int n) {
if (n <= 1) {
return false;
}
for (int i = 2; i <= sqrt(n); i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
int main() {
int n, m;
cout << "Enter n and m: ";
cin >> n >> m;
ofstream fout("data.dat", ios::binary);
if (!fout) {
cout << "Failed to open file." << endl;
return 1;
}
int cnt = 0;
for (int i = n; i <= m; i++) {
if (isPrime(i)) {
fout.write((char*)&i, sizeof(int));
cnt++;
}
}
fout.close();
ifstream fin("data.dat", ios::binary);
if (!fin) {
cout << "Failed to open file." << endl;
return 1;
}
int num;
int i = 0;
while (fin.read((char*)&num, sizeof(int))) {
cout << num << " ";
i++;
if (i % 10 == 0) {
cout << endl;
}
}
fin.close();
cout << endl << "Total: " << cnt << " prime numbers." << endl;
return 0;
}
```
代码中首先定义了一个 `isPrime` 函数,用于判断一个数是否为素数。接着从用户输入中读取起始数 `n` 和终止数 `m`。然后打开 `data.dat` 文件,将 `n` 到 `m` 范围内的素数写入文件中。写入时使用了 C++ 的二进制写入模式,这样可以直接将整数转换为字节流写入文件中。
接下来再打开 `data.dat` 文件,读取其中的整数,并以每行 10 个数的形式显示在屏幕上。
最后输出素数总个数,并结束程序。
阅读全文