找到所有小于N的素数
摘要:素数问题是个博大精深的问题。我这里只是用一种“相对”高效的算法来查找所有小于某个整数的素数。首先来看一下素数的性质:1.素数不能被除了1和本身之外所有整数整除2.1不是素数3.2是素数4.除了2之外,所有素数均是奇数算法使用的思想:小于整数N的任意合数一定可以被小于N开方的素数中其中一个整除;也就是说小于N的整数中,只要不能被小于N开方的任一素数整除,那么它就是素数。这样,根据递归思想,要求出小N的所有素数,则先求出小N开方的所有素数集合a,然后再遍历大于N开方小于N的整数分别除以集合a的所有素数,以求出大于N开方小于N的素数集合b,则a+b即为小于N的所有素数;另外,根据上述性质4,在遍历的
阅读全文
posted @
2013-06-24 11:38
朱亮
阅读(2093)
推荐(1)
一组连续的数中少了某一个,找到它
摘要:在一组连续的数字中(如从1到10000)去掉某一个值,将去掉的值放到一个数组中,求出去掉的那个值。这是一道很经典的题,相信大家都知道怎么做。目前我看的最好的做法有两种:一、求和相减法:将1到10000这10000个数相加得到数a;然后将数组中的数相加得到数b;最后a-b就是我们要求的值。但是,这种最后存在一个问题,就是可能存在越界的问题,当上界很大的时候很肯尼个造成相加操作越界。所以有了第二种解法。二、辅助数组法:将从1到10000这1万个数放入到一个数组中,然后将新数组和原数组位位相减,最后得出了值就是我们要求的值。但是,这种解法的空间复杂度是O(n)。那么有没有一种解法可以是时间复杂度O(
阅读全文