【发布时间】:2018-03-26 21:13:32
【问题描述】:
我有这个作业但是我做不完,因为我只能使用关系运算符和 if-else/while,我不能使用库和方法,只有关系运算符和 If 或 while,我开始检查 If限制的数字是素数,首先检查 If / by 2 3 5 7 and 11 after that I try % with each number before the square root of the number (以确定它是否是素数) 但它只需要很多这样做的时间,我怎么能用更少的时间来计算它,对不起英语和罕见的解释。
【问题讨论】:
-
听起来更像是一个数学问题,看看这个mathworld.wolfram.com/PrimalityTest.html 并选择一种算法,用 Java 或 Google 实现其中一种算法的 Java 实现
-
你的问题很难理解。但这是一个事实。如果您需要您的代码快速,您将不得不使用数组(和筛算法)或涉及一些复杂数学的概率素性测试。您确定您的老师要求您提供一个快速的程序吗?我怀疑他/她没有....而您只是在为自己过日子!
-
从老师的角度来看,这个练习的重点是让学生学会使用算术、关系运算符和简单的控制结构来编写程序。寻找素数的快速算法几乎肯定超出了编程入门课程的范围。我的建议:按照要求去做,把节省下来的时间花在学习其他东西上。
-
如果你好奇,这里有一个概率素性测试的链接:en.wikipedia.org/wiki/Miller%E2%80%93Rabin_primality_test 但这通常只用于比整数范围大得多的数字,因为基本方法比它快。