Java求n以内最大的k个素数以及它们的和
时间: 2023-06-14 21:05:11 浏览: 168
下面是一个求n以内最大的k个素数以及它们的和的Java代码:
```java
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
int n = 100; // 求n以内的素数
int k = 5; // 求最大的k个素数
int sum = 0; // 素数的和
List<Integer> primes = new ArrayList<>(); // 存储素数的列表
for (int i = 2; i <= n; i++) {
if (isPrime(i)) { // 如果i是素数
if (primes.size() < k) { // 如果素数的数量不足k个
primes.add(i); // 将素数添加到列表中
} else { // 如果素数的数量已经达到k个
int minPrime = primes.get(0); // 获取列表中最小的素数
if (i > minPrime) { // 如果当前素数大于最小的素数
primes.remove(0); // 将最小的素数移除列表
primes.add(i); // 将当前素数添加到列表中
}
}
sum += i; // 素数的和加上当前素数
}
}
System.out.println("n以内最大的" + k + "个素数为:" + primes);
System.out.println("它们的和为:" + sum);
}
// 判断一个数是否为素数
private static boolean isPrime(int n) {
if (n < 2) {
return false;
}
for (int i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
}
```
这个程序中,我们用一个列表`primes`来存储素数,并且每次找到一个素数时都会判断是否把它加入到`primes`中。如果`primes`中的素数数量不足k个,就直接添加到列表中;如果已经达到k个,就找到列表中最小的素数,如果当前素数大于最小的素数,就将最小的素数替换成当前素数。
同时,我们还用一个变量`sum`来记录素数的和,每次找到一个素数时就把它加到`sum`中。最终输出结果时,我们分别输出`primes`和`sum`即可。
阅读全文