gpt4 book ai didi

java - 非常简单的素数测试——我想我不理解 for 循环

转载 作者:搜寻专家 更新时间:2023-10-30 19:47:45 24 4
gpt4 key购买 nike

我正在为基础 Java 考试练习过去的试卷,我发现很难使用 for 循环来测试数字是否为质数。我不想通过为更大的数字添加效率措施来使其复杂化,只是一些至少适用于 2 位数的数字。

目前它总是返回 false,即使 n 是质数也是如此。

我认为我的问题是 for 循环本身以及将“return true;”放在哪里有问题和“return false;”...我确定这是我犯的一个非常基本的错误...

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

我在 stackoverflow 的其他地方找不到帮助的原因是因为类似的问题要求更复杂的实现以更有效的方式进行。

最佳答案

你的 for循环有一点问题。应该是:-

for (i = 2; i < n; i++)  // replace `i <= n` with `i < n`

n 时,您当然不想检查余数。除以 n .它会一直给你1 .

事实上,您甚至可以通过将条件更改为:- i <= n / 2 来减少迭代次数。 .自 n不能被大于 n / 2 的数除,除非我们考虑 n ,我们根本不必考虑。

因此,您可以更改 for循环到:-

for (i = 2; i <= n / 2; i++)  

关于java - 非常简单的素数测试——我想我不理解 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14650360/

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