gpt4 book ai didi

java - 如何在 Java 中使用一种方法将素数打印到 N

转载 作者:行者123 更新时间:2023-11-29 10:17:07 24 4
gpt4 key购买 nike

我正在尝试制作一个 void 方法,该方法打印素数直到给定的 int 参数。这就是我所拥有的,但它不起作用。

public class listPrimes {
public static void main(String[] args) {
printPrimes(1000);

}

static void printPrimes(int max) {
int counter = 0;
for (int i = 2; i <= max; i++) {
for (int n = 2; n < i; n++) {
if (i % n == 0) {
counter++;
}
}
if (counter == 0) {
System.out.println(i);
counter = 0;
}
}
}
}

我能够使用以下 2 种方法创建所需的效果,但我想使用一种方法来实现。我上面的代码有什么问题?

public class listPrimes {
public static void main(String[] args) {
printPrimes(1000);
}

private static void printPrimes(int max) {
for (int i = 2; i <= max; i++) {
if (primeCheck(i)) {
System.out.println(i);
}
}
}

static boolean isPrime(int check) {
for (int i = 2; i < check/2; i++) {
if (check % i == 0) {
return false;
}
}
return true;
}
}

最佳答案

您永远不会在外层循环 中重置counter 的值。因此,一旦增加,它就永远不会为 0。因此,只需在外循环开始时重置 counter 即可:-

for (int i = 2; i <= max; i++) {
counter = 0;
for (int n = 2; n < i; n++) {
if (i % n == 0) {
counter++;
}
}
if (counter == 0) {
System.out.println(i);
}
}

但是,我更喜欢第二种方式,因为它以不同的方式划分了任务。因此,这两种方法都有其定义的角色。您可以轻松地在其他地方使用它们。请记住,在不同方法之间划分任务越多,您获得的可重用性就越高。用一种方法只完成一项任务总是更好。

此外,我建议将方法 - primeCheck 重命名为 isPrime,因为它返回一个 boolean 值。所以,按照命名约定,isPrime 将是一个好名字。

关于java - 如何在 Java 中使用一种方法将素数打印到 N,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14761323/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com