求100以内素数的5中基本方法及其优化 方法1 基本做法

错解比较:进入了小循环:有时加pass也可以。 错解: 这里的print也同样注意不要写到循环内。

注释: 1.两种条件运用:为合数。 2.以上错误点。 ** 方法二**

注释;1.条件运用,质数除了2都是奇数,因为偶数都能被除了自身外的2整除。改进自1 2.偶数除了2都不是质数。 3.第二个for写的是到开方的奇数。 4.奇数含有质数和非质数。偶数除了2一定不是质数。所以先剥离了偶数。

方法三:使用列表

注释:1.break continue pass 2.质数i依然是从奇数中选。 3.条件应用,一个数如果能被一个素数整除,那它是合数。 4.用列表primenumber[]存储质数作为被除数。

方法四 本做法及优化 1.本做法 注释: 1.利用以前的结果,把之前的质数结果用起来了。得知道一些规律。质数等于质数的乘机 记住一些记好了。冒泡法(算法)记不住,所以换算法。 2.if i>x0.5,即i都大于x0.5依然未被整除(因为未走上一个分支,相当于截胡在这里,而来/走这个分支)。 拿一定是质数。上边一个if相当于判断是否是合数。下边的是在上边的基础上告知你都到x**0.5,依然未被break, 肯定是质数。??两个If与上边for 的关系,是否如上所述:先走上边if循环,如果还未被整除,那么。 测试:发现是一个数值x先走了两个if.相当于一根管子有两个阀门。是直的 测试: 测时间差,看优化性 2.on优化。每次都开方太耗时。放在相应的循环层次上减少循环每次都计算/分摊平方。

**方法五 **条件:大于3的素数只有6N+1和6N-1两种形式,但反过来不成立。但是比如25(非质数)和23,是这种,但不成立。也即23没有孪生质数。 **推到出其他隐藏情况【除了2,3】 1.6N只表示6的倍数,各个数字的N不尽相同,N相同的情况下互为孪生,N=1比如5 7。 2.排序的话N是一位一位往上加的依次是N=1 5 7 ; N=2 11 13 ....。 3.由此推到出两个相邻的孪生组的相接的两个数的差为4,孪生组之间的差为2(delta=6N+1-6N+1=2)。本体为依次隐藏情况为打码解题条件。(或通过看下边的列举,得出结论,有可能是错误的特别是含有倍数的情况,越往上随着循环还会delta更大如下应该是2,4,2,4,...,2,4,6)

孪生素数即6n+1与6n-1。而其
Range函数只定值一次。相当于不变。所以补偿该此案放在下边。

4.**错误:打印未在else循环内,打印出的必然是未经筛选的 正确:print要在else内,否则无法筛选25等。print要在x +=前,否则累加的25等也会被打印。即非质数的6N+1。