前言:
今天朋友们对“筛选算法求素数”大概比较关心,我们都想要分析一些“筛选算法求素数”的相关内容。那么小编同时在网上汇集了一些对于“筛选算法求素数””的相关资讯,希望大家能喜欢,大家快快来了解一下吧!自然数列中挖去合数的方法
为了得到数列中的素数,就要挖去数列中的全部合数。
挖去合数有各种各样的方法,
我使用的办法是“素因子试除法”
这种方法的原理是:素数在自然数中以自身数值等距离产生无穷的素因子合数。
下面就这一方法作简单介绍。
为方便起见我们只讨论尾数为1,3,7,9的自然数列,这些自然数是素数和合数的有机结合。
这些合数的素因子有3/7,11/13/17/19,23/2931/3741/43/47,51/53/57...Pi-1,Pi Pi+1,,,。
(一) 素因子Pi在数列中生成的第一个合数 iM0 以及在后面相关项中生成其它合数iMk 的规律。
1. 尾数为1的自然数列
Mn = 10 N+1 N=0,1,2,3 ,,, ∞
这些自然数是素数和合数的有机结合。这些合数的素因子有
3/7,11/13/17/19,23/2931/3741/43/47,51/53/57...Pi-1,Pi Pi+1,,,,
这些素因子可生成数列的全部合数。
为方便起见,素因子P3生成的合数标记为3M,对应的N值标记为3N,
素因子P7生成的合数标记为7M,对应的N值标记为7N,,, 素因子Pi
生成的合数标记为iM,对应的N值标记为iN,,,
1) 用试除法找到素因子Pi在数列中生成的第一个合数 iM0
下面列表给出用试除法找到的素因子3 /7 /11 /13 /17 /19...Pi
在数列中生成的第一个合数 iM0 =10iN0+1,以及生成第一个合数
iM0 时 N 的第一项数值 iN0:
iN0 = (iM0-1)÷10 ( iM0 去除尾数留下来的数值 )
生成第一个合数iM0时N的第一项数值 iN0
这是关键的第一步。因为用试除法找到第一个合数 iM0 以及 iN0 后,则素因子Pi在数列后面相关项中生成其它合数iMk时, iMk / iNk的数值遵守下面的规律
iNk=iN0+kPi k=0,1,2,3,,,∞
iMk=10iNk+1 i=3,7,11,13,17,19,,(素因子Pi的数字)
2) 下面列表给出iNk以及iMk的规律:
2. 尾数为3的自然数列
Mn = 10N + 3 N =0,1,2,3,,,∞
1) 素因子Pi在数列中生成的第一个合数iM0时,iM0/ iN0的规律:
iM0=10iN0+3
iN0=(iM0-3)÷10 (iM0 去除尾数留下来的数值)
生成第一个合数iM0时N的第一项数值 iN0
2) 素因子Pi 在iM0/ iN0后面相关项中生成其它合数iMk时,
iMk/ iNk的数值遵守下面的规律:
iNk=iN0+kPi k=0,1,2,3,,,∞
iMk=10iNk+3 i=3,7,11,13,17,19,,(素因子Pi的数字)
iMk/ iNk的数值规律
3. 尾数为7的自然数列
Mn = 10N + 7 N =0,1,2,3,,,∞
1) 素因子Pi在数列中生成的第一个合数iM0时,iM0/ iN0的规律:
iM0=10iN0+7
iN0=(iM0-7)÷10 (iM0 去除尾数留下来的数值)
iM0/ iN0的规律
2) 素因子Pi在iM0/ iN0后面相关项中生成其它合数iMk时,
iMk/ iNk的数值遵守下面的规律:
iNk=iN0+kPi k=0,1,2,3,,,∞
iMk=10iNk+7 i=3,7,11,13,17,19,,(素因子Pi的数字)
iMk/ iNk的数值规律
4. 尾数为9的自然数列
Mn = 10N + 9 N =0,1,2,3,,,∞
1) 素因子Pi在数列中生成的第一个合数iM0时,iM0/ iN0的规律:
iM0=10iN0+9
iN0=(iM0-9)÷10 (iM0 去除尾数留下来的数值)
iM0/ iN0的规律
2) 素因子Pi在iM0/ iN0后面相关项中生成其它合数iMk时,
iMk/ iNk的数值遵守下面的规律:
iNk=iN0+kPi k=1,2,3,,,∞
iMk=10iNk+9 i=3,7,11,13,17,19,,(素因子Pi的数字)
iMk/ iNk的数值规律
(二) 挖去素因子Pi生成的全部合数
1) 下面在尾数为1的数列中以素数P3/P7.../Pi为例来说明:
素数P3在第一个合数21后面的第三项生成第二个合数51,以后每隔3项再生成另外一个合数:
它们分别是81,111,141,171,201,,,一直到我们想要的最后一个合数为止。
素数P7在第一个合数91后面的第七项生成第二个合数161,以后每隔7项再生成另外
一个合数:
它们分别是231,301,371,441,511.. 一直到我们想要的最后一个合数为止。
素数Pi在第一个合数后面第Pi项生成第二个合数10(iN1+Pi),以后每隔
Pi项再生成下面另外一个合数:
它们分别是10(iN1+2Pi), 10(iN1+3Pi), 10(iN1+4Pi),...一直到我们想要的最后一个合数为止。
用这种方法,从头到尾,从小到大,一个接一个地除去所有的素因子Pi的全部合数(有一些素因子合数可能重复),我们就得到了数列中遗留下来的所有素数。
2) 素因子Pi在自然数列中生成合数 iMk时的 iNk:
iMk=10iNk+Xi iNk=iNk0+kPi Xi=1,3,7,9
素因子Pi在自然数列中生成合数 iMk时的 iNk
素因子Pi在自然数列中生成合数 iMk时的 iNk
3) 挖去以上这些素因子合数,我们就得到了数列中留下来的素数。
自然数1000以内素数列表如下:(166个不包含2,5)
标签: #筛选算法求素数 #筛选法求素数流程图 #筛选法求素数的原理 #筛选法求素数流程图怎么做 #1000以内的素数程序