我有这个功课,但我不能完成它,因为我只能使用关系运算符和if-else/while,我不能使用库和方法,只有关系运算符和If或while时,我开始检查如果限制的数字是素数,首先检查If/by 2 3 5 7和11是否我用数字的平方根之前的每个数字尝试百分比(以确定它是否为是总理),但它只需要很多时间来做到这一点,我怎么能用更少的时间来计算它,对于英语是一个难得的解释抱歉。计算最近的素数到另一个数字没有数组
1
A
回答
0
没有阵列,唯一的另一种选择是有一些Eratosthenes筛选器(对于任何希望比试验部门有更好的复杂性比原始性测试),我知道的是懒惰列表,它可以模拟发电机。在伪代码,
primes = [2..] \ [[p*p, p*p+p, ...] for p in primes]
与起点这成为
primesFrom n = [n..] \ unionAll(
[[s,s+p..] for each p in psq
where psq = primes upto (2 * sqrt(n)),
where s = div(n+p-1, p) * p])
,我们只希望带着它产生的第一号。 工会这里当然是一个订购一,订购,增加来源,以有序的方式产生其结果,一个接一个从较小的值到较大的值。
平方根的两倍用于覆盖范围中最大的prime gap的想法。您可以通过查找范围的主要差距的精确值来使其更加精确。 psq
素数可以在发生器中与试验师一同发现。
但是现在你需要维护这个发生器集合[s,s+p..]
在某个地方,并且仍然禁止使用数组。
链表是一种可能性。它也可以效仿,与每个closures本地静态存储嵌套递归函数,创建它们对初始化链,像
= [n..] \
([s1,s1+p1..] ∪
([s2,s2+p2..] ∪
([s3,s3+p3..] ∪ (.... [sk,sk+pk..] ....))))
你可以看到一个例子something just like this,在围棋,here(和a faster one),尽管它实现的\
S(链没有∪
S),
= (((....([n..] \
[s1,s1+p1..]) \
[s2,s2+p2..]) \
[s3,s3+p3..]) \ ....) \ [sk,sk+pk..]
这可能是干脆做一个容易的事情。
该∪
s虽然可以安排in a tree,为额外的complexity advantage。也许是一个有趣的项目。
相关问题
- 1. 计算最接近的数字numpy
- 2. 如何在数组中找到最接近的素数到该数组中的另一个数?
- 3. eval没有将字符串数组计算到数组中
- 4. 计算一个值并舍入到最接近的整数
- 5. 计算数组中元素的个数
- 6. 计算一个数字的面额的最大最佳组合
- 7. 如何找到距离另一个数组元素x最近的数组元素?
- 8. 查找数组中最近的一组数值到一个数组中
- 9. 找到一个数字的最接近的倍数到另一个数字 - 目标C
- 10. 一个数组中的所有数字都是<=到另一个数组
- 11. 我必须找到没有数组的两个最小数字
- 12. 数组PHP计算字数
- 13. 计算数组中所有两个数字整数的总和
- 14. 如何按元素计算数组和数字元素之间的最大值?
- 15. 如何从另一个数组的计算创建一个数组excel vba
- 16. copy元素到另一个数组
- 17. 计算两个数组元素出现在一起的次数
- 18. 如何在MATLAB中获得接近另一个数组的数组元素?
- 19. 写一个函数计数(数字,数组,长度),它将计算数字出现在数组中的次数
- 20. 如何计算一个数组中有多少个最大值?
- 21. 计算数组中的元素数 - C
- 22. 计算数组中元素的数量
- 23. 1000个数字的字符串,找到没有数组的最大5位数
- 24. 没有数组元素的计数数组
- 25. 下一个最小最接近的数字得到一个小数
- 26. 将数组的元素追加到另一个数组
- 27. 计算数组的最小数
- 28. 计算哪个绘制的圆是最接近另一个的
- 29. 计算最接近从数组值组合
- 30. 为另一个数组中的所有值查找一个数组的最接近的索引 - Python/NumPy
听起来更多的数学问题,看看这个http://mathworld.wolfram.com/PrimalityTest.html并选择一个算法,在Java或谷歌实现它的算法之一的Java的实现 –
您的问题是很难明白。但这是你的事实。如果你需要你的代码快**,你将不得不使用数组(或筛选算法)或涉及复杂数学的概率素性测试。你的**确实**,你的老师已经要求你提供一个快速的课程吗?我怀疑他/她没有......而你只是让自己难过! –
从老师的角度来看,这个练习的重点是让学生学习使用算术,关系运算符和简单的控制结构编写程序。用于寻找素数的快速算法几乎可以肯定*超出了范围*的入门编程课程。我的建议是:按照要求提出要求,花费你在学习其他方面所节省的时间。 –