您的代码有一些问题。首先,在class名称上有一个小错误,应该是`Thread1`而不是`thrend1`。其次,您在代码中使用了多线程,并且将寻找素数和完全数的逻辑放在了`run`方法中。但是,在您的代码中没有调用`Thread.start()`方法来启动线程,因此代码不会执行。另外,如果您只是想要寻找素数和完全数,并不需要使用多线程,可以直接在主线程中进行操作。
下面是一个修正后的示例代码来寻找素数和完全数。
import java.util.ArrayList;
import java.util.List;
public class PrimeAndPerfect {
private static boolean isPrime(int num) {
if (num <= 1) {
return false;
}
for (int i = 2; i <= Math.sqrt(num); i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
private static boolean isPerfect(int num) {
int sum = 0;
for (int i = 1; i < num; i++) {
if (num % i == 0) {
sum += i;
}
}
return sum == num;
}
public static void main(String[] args) {
List<Integer> primes = new ArrayList<>();
List<Integer> perfects = new ArrayList<>();
for (int i = 1; i <= 100; i++) {
if (isPrime(i)) {
primes.add(i);
}
if (isPerfect(i)) {
perfects.add(i);
}
}
System.out.println("素数:");
for (int prime : primes) {
System.out.print(prime + " ");
}
System.out.println("\n完全数:");
for (int perfect : perfects) {
System.out.print(perfect + " ");
}
}
}
这段代码会输出100以内的素数和完全数。注意,在代码中判断一个数是否为素数时,我们只需要从2到sqrt(n)进行遍历,提高了算法效率。对于完全数的判断,我们遍历小于该数的所有因子并求和,如果和等于该数,则该数为完全数。
希望这个例子对您有所帮助!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |