java平方根优化100以内素数
时间: 2024-10-08 18:15:01 浏览: 39
在 Java 中计算100以内所有质数的平方根并优化算法通常涉及以下几个步骤:
1. **判断素数**:首先需要一个函数来判断一个数字是否为质数。这可以采用常见的“埃拉托斯特尼筛法”(Sieve of Eratosthenes) 或者简单的试除法。
```java
public boolean isPrime(int n) {
if (n <= 1) return false;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) return false;
}
return true;
}
```
2. **计算平方根**:对于每个小于或等于100的数字,求其平方根并检查它是否为整数,因为一个非质数的平方肯定会有小于它的因子,所以该数的平方根如果是整数,那么原数就不是质数。
```java
public double sqrtPrime(int num) {
return Math.sqrt(num);
}
List<Integer> primeSquaresRootUnder100 = new ArrayList<>();
for (int i = 2; i <= 100; i++) {
double root = sqrtPrime(i);
if (root == (int) root && isPrime(i)) {
primeSquaresRootUnder100.add((int) root);
}
}
```
3. **优化**:这个过程其实已经相当高效,但如果想要进一步优化,可以考虑只对奇数进行测试,因为偶数除了2之外不可能是质数。
```java
// 只保留奇数
primeSquaresRootUnder100 = primeSquaresRootUnder100.stream()
.filter(n -> n % 2 != 0)
.collect(Collectors.toList());
```
阅读全文