如果一个素数逐次去掉低位后依然是素数,则称为超级素数,如317、797。输出1000以内的超级素数,Java实现
时间: 2024-10-16 15:04:50 浏览: 51
为了输出1000以内的超级素数,我们需要首先编写一个函数来检测一个数是否是超级素数幂。这涉及两个步骤:首先判断一个数是否是素数,然后检查它是否可以表示为某个素数的幂。
以下是一个简单的Java实现:
```java
public class SuperPrimePower {
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;
}
private static boolean isSuperPrimePower(int num) {
for (int p = 2; p * p <= num; p++) {
if (!isPrime(p)) continue;
int exponent = 0;
while (Math.pow(p, exponent) <= num) {
if (Math.pow(p, exponent) == num) {
return true;
}
exponent++;
}
}
return false;
}
public static void main(String[] args) {
for (int i = 2; i < 1000; i++) {
if (isSuperPrimePower(i)) {
System.out.println("Super prime power: " + i);
}
}
}
}
```
这段代码定义了两个辅助函数`isPrime`和`isSuperPrimePower`。`isPrime`用于检查一个数是否为素数,`isSuperPrimePower`则递归地尝试找到一个素数p和它的指数exponent,使得i等于p的exponent次方。主函数通过遍历1到999的数,对每个数调用`isSuperPrimePower`,如果返回true,则输出该超级素数。
阅读全文