java找出1至n以内的所有素数。要求使用数组元素的下标从1至n以内表示这些数值,数组元素的值作为素数的标志。其中用数组元素的值为0来表示该元素的下标的数值是素数,用1来表示该元素的下标的数值不是素数,并输出这些素数。
时间: 2024-03-02 13:52:26 浏览: 24
好的,这是一个比较基础的算法,可以使用筛法实现。具体实现如下:
```java
import java.util.Scanner;
public class PrimeNumber {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(); // 输入n
// 初始化数组,全部标记为素数
int[] prime = new int[n + 1];
for (int i = 2; i <= n; i++) {
prime[i] = 0;
}
// 筛法求素数
for (int i = 2; i <= n; i++) {
if (prime[i] == 0) {
// 如果i是素数,将i的倍数标记为非素数
for (int j = i * 2; j <= n; j += i) {
prime[j] = 1;
}
}
}
// 输出素数
for (int i = 2; i <= n; i++) {
if (prime[i] == 0) {
System.out.print(i + " ");
}
}
}
}
```
解释一下代码:
首先,我们输入一个整数n,表示要找出1至n以内的素数。
然后,我们初始化一个长度为n+1的数组prime,用于存储每个数是否为素数。这里我们用0表示素数,用1表示非素数。
接着,我们使用筛法求素数。从2开始枚举每个数i,如果i是素数,那么将i的倍数2i、3i、4i、...全部标记为非素数。具体实现中,我们可以使用一个内层循环,从2i开始,每次加i,直到不大于n。
最后,我们遍历数组prime,输出所有标记为素数的数。
注意,由于题目要求使用数组元素的下标从1至n以内表示这些数值,数组元素的值作为素数的标志,因此我们在初始化数组时,要从下标2开始,把下标0和下标1都标记为非素数。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)