龙空技术网

我的素数筛选方法之一

佛子村仙 110

前言:

今天朋友们对“筛选算法求素数”大概比较关心,我们都想要分析一些“筛选算法求素数”的相关内容。那么小编同时在网上汇集了一些对于“筛选算法求素数””的相关资讯,希望大家能喜欢,大家快快来了解一下吧!

自然数列中挖去合数的方法

为了得到数列中的素数,就要挖去数列中的全部合数。

挖去合数有各种各样的方法,

我使用的办法是“素因子试除法”

这种方法的原理是:素数在自然数中以自身数值等距离产生无穷的素因子合数。

下面就这一方法作简单介绍。

为方便起见我们只讨论尾数为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以内的素数程序