编写一个java程序,求2~200之间的素数,并将结果保存在文件prime.dat中。再从该文件中读取内容并在屏幕上显示出来。
时间: 2024-05-15 10:14:34 浏览: 90
用java程序找出素数
好的,让我帮您解决这个问题。首先,我们可以利用埃拉托色尼筛法的思想来进行求解。具体的实现过程如下:
1. 创建一个长度为200的布尔类型数组prime,用于标记每一个数是否为素数。初值都为true。
2. 从2开始,依次枚举2~200的每一个数,对于每一个数n,如果它没有被标记成false,说明它是素数,将其写入文件prime.dat,并将2n、3n、4n、……、100n标记成false。
3. 从文件prime.dat中读取素数并输出到屏幕上。
以下是完整的java代码:
```java
import java.io.*;
public class PrimeNumber {
public static void main(String[] args) {
// 创建布尔类型数组prime,用于标记每一个数是否为素数
boolean[] prime = new boolean[201];
// 初值都为true
for (int i = 2; i <= 200; i++) {
prime[i] = true;
}
// 埃拉托色尼筛法求素数
for (int i = 2; i <= 200; i++) {
if (prime[i]) {
// 将素数写入文件prime.dat
try (DataOutputStream out = new DataOutputStream(new FileOutputStream("prime.dat", true))) {
out.writeInt(i);
} catch (IOException e) {
e.printStackTrace();
}
// 将2n、3n、4n、……、100n标记成false
for (int j = 2; i * j <= 200; j++) {
prime[i * j] = false;
}
}
}
// 从文件prime.dat中读取素数并输出到屏幕上
System.out.println("2~200之间的素数为:");
try (DataInputStream in = new DataInputStream(new FileInputStream("prime.dat"))) {
while (true) {
int n = in.readInt();
System.out.print(n + " ");
}
} catch (EOFException e) {
// 结束读取文件
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
通过运行程序,可以得到如下输出结果:
```
2~200之间的素数为:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199
```
希望以上回答能够帮到您,如果还有其他问题,请随时提出。
阅读全文