当前位置: 首页 > 面试题库 >

非常简单的素数测试-我认为我不了解for循环

米嘉禧
2023-03-14
问题内容

我正在为基本的Java考试练习过往的试卷,并且发现很难使for循环工作来测试数字是否为质数。我不想通过为较大的数字添加效率度量来使其复杂化,而只是至少对于2位数的数字有效。

此刻,即使n是质数,它始终返回false。

我认为我的问题是,for循环本身以及将“ return true”放置在何处都会出错。和“返回假;” …我确定这是我犯的一个非常基本的错误…

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++)


 类似资料:
  • 我有两个循环。在第一个循环中,我分割字段(分割)。在第二个循环中,我想打印新的字段值。只有0。我想知道循环有什么问题。我没有发现错误。:)我认为问题出在这方面: 我在Windows 7中使用Visual Studio 2013编程。 %lf输出(正确): %f输出(不正确):

  • 我有组织。postgresql。util。PSQLException:错误:关系“roles”不存在,我不知道为什么。 实体类 资源/META-INF/持久性。xml 在我有 那么为什么我有这样的错误,为什么会这样?我读过这个问题,它对我没有帮助。

  • 主要内容:非常简单的英语自我介绍【篇1】,非常简单的英语自我介绍【篇2】,非常简单的英语自我介绍【篇3】,非常简单的英语自我介绍【篇4】,非常简单的英语自我介绍【篇5】,非常简单的英语自我介绍【篇6】,非常简单的英语自我介绍【篇7】,非常简单的英语自我介绍7篇 非常简单的英语自我介绍?有很多人以为自我介绍很难写?其实是没有抓住精髓,把简单的问题给复杂化了。那么下面小编给大家带来了非常简单的英语自我介绍,供大家参考。 非常简单的英语自我介绍【篇1】 My surname is Li wen, lo

  • 问题内容: 我有一个整数列表,我正在运行-loop来发现两个元素的总和是否等于另一个变量。所以,如果是等于和我有一个整数列表: ,那么函数应该打印所有数字的不同组合,。 我感觉自己快到了,但是当我使用该功能时,列表中发生了一些奇怪的事情。下面的代码用于显示所有需要计算的数字组合,但是列表中的所有其他元素都被跳过。 这是输出: 请注意如何,,,和被跳过。我正在使用第二个-loop不会使用原始值,然后

  • 问题内容: 有人可以解释为什么以下代码会如此行为: 输出(请注意,永远不会调用d2的析构函数)是(python 2.7) 有没有一种方法可以“修复”代码,以便在不删除添加的方法的情况下调用析构函数?我的意思是,放置d2.func = None的最佳位置将在析构函数中! 谢谢 [edit]基于前几个答案,我想澄清一下,我并不是在问using的优点(或不足之处)。我试图创建最短的函数来证明我认为是非直

  • 这是我的for循环。。。jGRASP说在我的for循环中出现了一个问题,我看不出这个问题,希望能得到一些帮助来修复我的代码。。。 公共类DirectoryLookup{public static void main(String[]args)引发IOException{