用java编写程序,找出1至n以内的所有素数。要求使用数组元素的下标从1至n以内表示这些数值,数组元素的值作为素数的标志。其中用数组元素的值为0来表示该元素的下标的数值是素数,用1来表示该元素的下标的数值不是素数,并输出这些素数。
时间: 2024-02-21 08:01:36 浏览: 59
java代码-使用java编写程序打印出N以内的素数的源代码
好的,这里是 Java 编写的解决方案:
```java
public static List<Integer> findPrimes(int n) {
// 初始化数组,全部设为 0
int[] isPrime = new int[n+1];
// 将不是素数的标记为 1
isPrime[0] = isPrime[1] = 1;
// 找出素数
for (int i = 2; i <= Math.sqrt(n); i++) {
if (isPrime[i] == 0) {
// 将 i 的倍数标记为 1
for (int j = i*i; j <= n; j += i) {
isPrime[j] = 1;
}
}
}
// 输出素数
List<Integer> primes = new ArrayList<>();
for (int i = 2; i <= n; i++) {
if (isPrime[i] == 0) {
primes.add(i);
System.out.println(i);
}
}
return primes;
}
```
这个函数接受一个整数 n,返回一个列表,其中包含 1 到 n 之间的所有素数。函数首先初始化一个长度为 n+1 的数组,将其中所有元素设为 0,表示它们都是素数。然后从 2 开始,找出所有素数并将它们的倍数标记为 1,最后输出素数并返回一个素数列表。
阅读全文