探索者 发表于 2015-5-23 22:00
刚刚自己已经检查出来了,是标志被置为1后,跳出循环,没有进行标志重新置0导致的,刚试了1000以内的,效率 ...
qq496099229 发表于 2015-5-23 22:44
/*
* 需求:打印出1000以内的所有质数。
探索者 发表于 2015-5-24 10:29
思路不错:
1.递增+2;因为偶数不可能是质数:
qq496099229 发表于 2015-5-24 10:33
其实开根号那个也是减少第二个循环次数的主要
探索者 发表于 2015-5-24 10:37
恩,那两点都改善的比较好,能不能做到只整除2到sqrt()之前的所有质数,这样效率是不是会更好? ...
qq496099229 发表于 2015-5-24 10:47
把2单独拿出来除,然后再整除3到sqrt()的奇数或许可以
别想太多 发表于 2015-5-24 10:43
标志被置为1后,跳出循环,没有进行标志重新置0
qq496099229 发表于 2015-5-24 10:47
把2单独拿出来除,然后再整除3到sqrt()的奇数或许可以
qq496099229 发表于 2015-5-24 10:51
要实现你说的整除质数,或许可以这样,,你把之前是质数的,存储在数组里面,然后i去遍历数组的数去整除 ...
南朝小和尚 发表于 2015-5-24 10:54
/*
思路:将1-1000存入array[1001]的数组,然后从中踢出1,2,3,4····的倍数
*/
探索者 发表于 2015-5-24 11:04
用数组去存储遍历到的质数,然后再整除数组的所有质数,其实这个方法我也有想过,只是觉得要是数比较大的 ...
qq496099229 发表于 2015-5-24 11:24
你要用到之前的质数,那肯定要存储的,算法极大的减少了时间复杂度,但是内存会增加。当然还可以用集合存 ...
探索者 发表于 2015-5-24 11:09
用数组去存储确实可以,只是对于比较大的数,数组就得非常大
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |