3.编写程序,生成一个二进制数据文件,将n~m之间的所有素数写入文件data.dat中。从数据文件中读取二进制数据,并在显示器上以每行10个数的形式显示。用c++语言编写
时间: 2024-02-13 07:00:02 浏览: 61
以下是 C++ 代码实现:
```cpp
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
bool is_prime(int num) {
if (num < 2) {
return false;
}
for (int i = 2; i <= sqrt(num); i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
void generate_prime_data(int n, int m) {
vector<int> primes;
for (int num = n; num <= m; num++) {
if (is_prime(num)) {
primes.push_back(num);
}
}
ofstream fout("data.dat", ios::binary);
for (int prime : primes) {
fout.write(reinterpret_cast<const char*>(&prime), sizeof(int));
}
fout.close();
}
void read_prime_data() {
ifstream fin("data.dat", ios::binary);
vector<int> primes;
int prime;
while (fin.read(reinterpret_cast<char*>(&prime), sizeof(int))) {
primes.push_back(prime);
}
fin.close();
for (int i = 0; i < primes.size(); i += 10) {
for (int j = i; j < i + 10 && j < primes.size(); j++) {
cout << primes[j] << " ";
}
cout << endl;
}
}
int main() {
generate_prime_data(10, 50);
read_prime_data();
return 0;
}
```
首先定义一个 `is_prime` 函数来判断一个数是否为素数。然后在 `generate_prime_data` 函数中,遍历从 n 到 m 的所有数字,将素数加入向量 primes 中,并将 primes 中的数据写入二进制文件 data.dat 中。写入时使用 ofstream.write 将 int 类型转换为二进制数据。
在 `read_prime_data` 函数中,首先打开文件 data.dat 并读取其中的数据,使用 ifstream.read 将二进制数据转换为 int 类型。然后将读取到的所有素数按每行 10 个数的形式输出。注意在输出时要判断向量大小是否超出当前行的范围。
阅读全文