1000以内的秋水仙数,JAVA
时间: 2024-06-19 22:00:56 浏览: 33
秋水仙素(Celery Number)是指一个正整数除以它的每个真因数后,结果都是质数的数。在Java中,我们可以编写一个程序来找出1000以内的所有秋水仙数。下面是一个简单的示例代码:
```java
import java.util.ArrayList;
import java.util.List;
public class CeleryNumbers {
private static boolean isPrime(int num) {
if (num <= 1) return false;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) return false;
}
return true;
}
public static List<Integer> findCeleryNumbers(int limit) {
List<Integer> celeryNumbers = new ArrayList<>();
for (int num = 2; num < limit; num++) {
int[] factors = getFactors(num);
if (areAllDivisorsPrime(num, factors)) {
celeryNumbers.add(num);
}
}
return celeryNumbers;
}
private static int[] getFactors(int num) {
int[] factors = new int[num];
int count = 0;
for (int i = 1; i <= Math.sqrt(num); i++) {
if (num % i == 0) {
factors[count++] = i;
if (i != num / i) { // 如果不是平方数,添加另一个因子
factors[count++] = num / i;
}
}
}
return factors;
}
private static boolean areAllDivisorsPrime(int num, int[] factors) {
for (int factor : factors) {
if (!isPrime(num / factor)) {
return false;
}
}
return true;
}
public static void main(String[] args) {
int limit = 1000;
List<Integer> celeryNumbersUnderLimit = findCeleryNumbers(limit);
System.out.println("1000以内的秋水仙数有: ");
for (int number : celeryNumbersUnderLimit) {
System.out.print(number + " ");
}