龙空技术网

大奇数因式分解之术与判断素数的方法

思考如何思考 255

前言:

今天咱们对“用c语言编程判断素数和奇数”都比较重视,朋友们都想要剖析一些“用c语言编程判断素数和奇数”的相关资讯。那么小编同时在网上搜集了一些关于“用c语言编程判断素数和奇数””的相关资讯,希望同学们能喜欢,你们快快来学习一下吧!

张四化(洞庭渔夫)

前两天在网络上无意间看到大数分解几个字,查找资料也没有找到想要的. 对于大数因式分解确实很难,真的没有什么好的方法吗?

这让我产生了好奇,好奇心就是这么怪,使人开始胡思乱想起来.

//猜想到猜想理论固定公式:

猜想(或猜测/疑惑)-------学习相关知识------分析数据------ 猜想理论(或公式/一句话等)—反过来再用实例证明猜想理论的正确性.

//

第一步:猜想:如果能找到一个方法多好呀!

现在马上到了第二步:

第二步: 学习相关知识:

资料来自百科

:

资料来自百科:

当然也找到些相关的素数筛选方法,《埃拉托斯特尼筛法》,简称根号法。

当看到:要得到自然数N以内的全部素数,必须把不大于根号N的所有素数的倍数剔除,剩下的就是素数.

我陷入了沉思,为什么是对一个数开根号呢? 为什么把不大于根号N的所有素数的倍数剔除,剩下的就是素数呢?,它真实的数理又是什么呢?

反复查找相关资料,也没有答案,只是说有这种筛选法.还有好多的计算机编程之类的.

既然没有答案,就去寻找看看吧!

又想起了我的序列数,多么好的工具呀!(自然数之美中有详细讲解)

我又重新对它整理,把它变成我想要的样子,好让我来分析它,先看能不能找到为什么是开根号的理由.

九组序列数变形如下:

多么熟悉的序列数啊,又要用到它了.

对这九组序列数,我还是蛮有心得的.

其实,在我心中早就发现了自然数的另一面,并暗自给自然数下了如下定义:

第1点:素数是组成自然数的基石。

第2点:自然数是由素数、素数与素数乘积表达式组成的

第3点:素数与素数乘积表达式:A1n1*A2 n2* A3n3…Amnn (A1/A2/A3….Am为素数。n 1,n2,n3…nn,为素数的指数(取值自然数(包括零)).当它们叁与运算时,指数是多少就是多少,不参与时,指数就是”0”

第4点:素数产生的原理:是前面的素数与素数乘积表达组合用尽,新的素数就一个一个产生了.比如:5这个数,前面只有2和3两个素数,2*2=4,所有的乘积组合用尽也无法表达5,2*3=6,后面的7无法表达,新的素数7就产生了.

请看我整理的序列数中:深黄色的就是素数.指数是1.其余的要不是自身的指数或就是几个的乘积表达.

虽然仁者见仁,智者见智,但我还是坚信自然数有这样的一面.

接下来就到了第三步;

第三步:分析数据

因为根号筛选法与平方数是密不可分的.

如果知道平方数产生的数理,则根号筛选法则自然而然成立.

那就给它一个5这个数吧:5^2=25.那它前面的24,是怎来的呢?2^3*3=8*3=24. 仔细检查了一下,只有2^3*3刚好在落在了24,其余的不是比它小,就是比它大.却又无法表达25这个数.所以5的平方就产生了.与素数的产生多么像呀.

例如:在25以前存在的素数有:23、19、17、13、11、7、5、3、2,在5的前面只有素数:2、3,看它们参与了哪些数的运算:

素数2这个数:2、2*2=4、2*3=6、2^3=8、2*5=10、2^2*3=12、2*7=14,2^4=16、2^2*5=20、2*11=22、2^3*3=24。

素数3这个数:3、3^2=9、3*5=15、3^2*2=18、3*7=21。

23、19、17、13、11、7、5这些素数,有的只是刚刚产生了,一次也没有参与运算,有的就算参与运算,也只是与2和3发生了乘积关系。

所在把2和3的倍数剔除。就只剩下23、19、17、13、11、7、5这些素数了。这与我自己对自然数下定义不谋而合:自然数是由素数、素数与素数乘积表达式组成的

曾听说过数具有对称美,回想起曾学过的加法对称美:

现在重新回顾一下:.

如:10以内的数,加起来等于10.

1 2 3 4 5 6 7 8 9

以5为中心,向两边分离开来(或从两边向中心靠拢).

4+6+10,(5与4,6各相差1)

3+7=10,(5与3,7各相差2)

2+8=10,(5与2,8各相差3)

1+9=10,(5与1,9各相差4)

原来它们的对称美是与数理有关的,与中心数刚好是等差数列,才具有对称美。

既然我认为:自然数是由素数、素数与素数乘积表达式组成的

那么数的乘积有没有对称美呢?

举个例子:24这个数,

5^2-1=(5-1)*(5+1)=4*6。4与6刚好是5的左右各一个. 它们不就是与5对称吗?

再举两个例子:

(5-2)(5+2)=3*7=21

(5-3)(5+3)=2*8=16

猜想:乘积符合对称美,平方差公式就是个好的开始。

这让我兴趣大涨.说真心话,平方差公式是目前能用得上仅有的学问啊,不用白不用.

不知不觉来到了第四步:

第四步:猜想理论(或公式/一句话等)

猜想一句话:平方差公式对任何奇合数进行因式分解.(偶数除外,因为任何偶数都可以被2因式分解)

既然要求奇合数进行因式分解,先给个具体的数,看能不能算出来?

又想到了根号筛选法筛素数.肯定不能给个刚好开根号的数.只能随机选一个了,就33这个数吧,。

哎呀!具体开根号也记不得了,那就看一下大概位置吧.

5<33开根号的数值<6

33开根号的数值肯定是在5—6之间的.

因为36开根号等于6,根号法筛选法先借用一下,就以6为中心,看它具不具有对称美.

先看它对称的几个数是什么?

1 2 3 4 5 6 7 8 9 10 11

先看它们的对称数的乘积:

5*7=35

4*8=32

3*9=27

2*10=20(已经在5^2+25之下了,就算了)

先看上面的几个数,只有35/32/27.这三个数.(32偶数除外,先不考虑,主要考虑奇合数分解因式)

这是为什么?

33不在这些数中,乘法应该符合对称美呀?,为什么少了数呢?是不是猜想出了问题?

还是先把33周边的数从36与25统统写下来再分析好了.

36 35 33 32 31 30 29 28 27 26 25

看到这里:先排除36是6的立方数与25是5的平方数.去掉了两个.还有好几个.当然对于31是29素数这个我是知道的.不能因式分解,先不管它们.就剩下了33,30,28,26

对它们先进一下因式分解:

33=11*3

30=15*2或30=3*10

28=14*2或28=4*7(这个排除,6为中心时4与8相对)

26=13*2

还是以中心来考虑,它们的因式以什么为中心呢?

上面出现了15这个数,还是把15以下的数写出来好分析些

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

因为:11-3=8,8/2=4,所以:11-4=7,3+4=7,可以确定是以7为中心对称的.也就理解了为什么以6为中心2*10=20(已经在5^2+25之下了),是由于一个数开根号对应的根,以它为中心往两边对称生成的数跨度超过了本身的平方数,也许这就是数理吧.

接下来就简单了:

对7为中心的数:33

这里要注意一个问题:26的产生应该在7为中心的对称上的,但现在7右边的数太少了,不满足对称,如果数足够大就不会出现这种情况了.(备注:这个是最开始的想法,后面证明这种理解是错误的。这种偶数没有对称中心,后面会说明)

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

同样的道理:以8为中心的数为:28. (备注:这种偶数有对称中心,后面会说明)

所以乘法也符合中心对称美这个规律;

接下来就用平方差公式来解33,

因为33是以7为中心:

所以得出:(7-N)(7+N)=33,49-N^2=33, N^2=16,N=±4.当然取正整数4,代入表达式中,(7-4)(7+4)=3*11. 33这个数太小,大家早就看出来。

虽然用这个方法是真的可以解得出来.但这样一个一个去计算中心数也是麻烦。

举个例子:3*37=111。对111这个数开根号,在10到11中间,但对称中心数去到了20这个地方。

(20-17)*(20+17)=3*37=111

这个数不大呀,可对称中心数移位太远。

如果一个数很大,对称中心数在哪里,不是成了一个大问题吗?

看来还得从数理上面来弄清楚它,才可能有解决的办法?

还就用3*37=111,这个具体的数来做例子好了。

先给一个模型方便些:

对称中心数的数值不断地往右移动,中心线的数值发生变化?

当然我知道:3*37=111,这个是不变的。

既然猜想说乘积具有对称性:那就看它每移动一个数,它们的乘积有什么变化吧?

3*11*37=11*111。相当于在心中线的地方是11个111。

3*12*37=12*111,中心线数每增加1相当于加了一个111。

3*13*37=13*111,中心线数每增加1相当于加了一个111。

3*14*37=14*111,中心线数每增加1相当于加了一个111。

3*15*37=15*111,中心线数每增加1相当于加了一个111。

3*16*37=16*111,中心线数每增加1相当于加了一个111。

3*17*37=17*111,中心线数每增加1相当于加了一个111。

3*18*37=18*111,中心线数每增加1相当于加了一个111。

3*19*37=19*111,中心线数每增加1相当于加了一个111。

3*20*37=20*111,中心线数每增加1相当于加了一个111。

真的美妙呀!当然这不是因式分解(平方差)的形式,再试一下因式分解吧。

(11-3)*(37-11)=37*11-11^2-3*37+3*11

(12-3)*(37-12)=37*12-12^2-3*37+3*12

(13-3)*(37-13)=37*13-13^2-3*37+3*13

(14-3)*(37-14)=37*14-14^2-3*37+3*14

(15-3)*(37-15)=37*15-15^2-3*37+3*15

(16-3)*(37-16)=37*16-16^2-3*37+3*16

(17-3)*(37-17)=37*17-17^2-3*37+3*17

(18-3)*(37-18)=37*18-18^2-3*37+3*18

(19-3)*(37-19)=37*19-19^2-3*37+3*19

(20-3)*(37-20)=37*20-20^2-3*37+3*20

因为(20-3)*(37-20)=17^2,刚好是一个数17的平方。20这就是想要的中心对称位置,相当于11加了9而得到的

只有-3*37是不变的,其它的都随中心线的变化而变化。当然这是给定3与37这两个数。这两个为数本就是我要求的,现在如果给定一个增量N,而不知道3与37,能进行变形吗?

先做些准备,用另外的未知量来求才是正解:

当然先知道某个数:设数为A,A=111,因为部分数是与这个数开根号具有对称的。还是先给数A开根号。判断数A落在哪两个数中间(B>C).(如 :11>111开根号的数值>10,两个数分别是B=11和C=10),设对称中心为P,先给P赋值:P=11。先设定两个数(D和F为两个因式分解数,且D<F),N为增量,就是指对称中心数偏移的数量。

基本图形如下图:

//注:比例大至差不多//

那就以P开始到P1结束,利用增量来改变一下因式分解的方法,N增量放前面,先找中心线的位置:

公式如下:

(N+P)*(N+P)

思路是只要两边相等就可以满足条件:如(9+11)*(9+11)=20^2=400.

它与前面的一个数P*P相比,又增加了多少量呢?

(N+P)^2-P^2

赋一组具体的数给它们:

(1+11)^2-11^2=12*12-11*11=(12-11)*(12+11)=1*23=23

(2+11)^2-11^2=13*13-11*11=(13-11)*(13+11)= 2*24=48

(3+11)^2-11^2=14*14-11*11=(14-11)*(14+11)=3*25=75

(4+11)^2-11^2=15*15-11*11=(15-11)*(15+11)=4*26=104

(5+11)^2-11^2=16*16-11*11=(16-11)*(16+11)=5*27=135

(6+11)^2-11^2=17*17-11*11=(17-11)*(17+11)=6*28=168

(7+11)^2-11^2=18*18-11*11=(18-11)*(18+11)=7*29=203

(8+11)^2-11^2=19*19-11*11=(19-11)*(19+11)=8*30=240

(9+11)^2-11^2=19*19-11*11=(20-11)*(20+11)=9*31=279

最后一项给它一个变形

(N+11)^2=279+11^2=279+121=400,400刚好可以开平方,平方根就20(取正整数)就是中心数。

N+11=20,N=9,N仅为增量

再利用平方差公式:

(20-N1)*(20+N1)=111

400-N1^2=111

N1^2=289

N1=17

因此得到最终因式分解:(20-17)*(20+17)=3*37=111

再对它进行一下变形20^2-17^2=111

再变一下:(3+17)^2-17^2=111,由此猜想出以下理论。(请留意这些数据)

所以猜想对因式分解统一公式:: 公式说明:求数A因式分解,数A是任意一个自然数。Q是一个变量(Q从1从自然数开始取值,),N是一个变量,N则为数A因式分解的一个因子,Q+N才是对称中心数。另一个因式分解对应的因子是:2Q+N,所以一个方程两个变量,只需要给变量Q赋值就可求解。

(N+Q)^2-Q^2=A

//这里有一个思维的跳跃,语言难以描述。

大概意思:相当于数A一定要增加一个平方数Q^2,还要满足能开平方,所以用Q的增加来满足这个条件。如此例中(3+17)^2-17^2=111,N=,Q=17,就差不多这个意思。 //

现在到了第五步:

第五步:反过来再用实例证明猜想理论的正确性.

先还是给一个111这个数。

当然不用手来计算,而是用电脑来算,看一下结果如何?

具体如下图:

所以奇数合数可以将所有的因式分解求出来。包括1*这个数本身。

下面给任意一个数671:

671分解成:11*61=671, 1*671

前面有讲过26这个偶数,为什么我最开始的认为对称中心7是错的。

请看下图。

因为这种偶数不符合对称美。因为它是由13*2奇数与单个2与后形成的。比如它的中心数是13,1—13---26,不能组成等差组列,1至13是13个数,而上面要从14到26这里也是13个数。所以不行。因此偶数大家都知道2是它的因子,不断转转化为奇数后再求因式分解。最少这里的计算公式是做不到这种偶数的。

又看28这个偶数为什么可以呢?

来看它的对称中心8:它的因式为:2*14,可以组成等差数列:2---8---14。因为28真成形成的原因是:2*2*7,它有两个2的叁与。

所有偶数都无法以其自身二分之一求出:1*偶数本身量。因为1、偶数中心,偶数本身三者无法构成等差数列。是这个公式的缺陷吧。

再给一个素数71:

素数只有一个解:1*71,没有其它的解。因此这个可以作为判断素数的依据。

所以最后做一个总结:

猜想对大数因式分解统一公式:

公式说明:求数A因式分解,数A是任意一个自然数。Q是一个变量(Q从1从自然数开始取值,),N是一个变量,N则为数A因式分解的一个因子,Q+N才是对称中心数。另一个因式分解对应的因子是:2Q+N,所以一个方程两个变量,只需要给变量Q赋值就可求解。

(N+Q)^2-Q^2=A

或(N+Q)^2=A+Q^2

由于无法表示根号符号,只能用图片

1、任何偶数先不断除2转化为奇数后,再对奇数求因式分解。(大偶数最终转化为奇数)

2、对于任何奇数,则可以先用6求余,余数为3,则最少有3这个因子

3、对于如果一个奇数有且只有一个解:1*这个数本身.可以判定这个奇数为素数.

4、对于奇数Q的赋值可以在[0--(Q/2+1)]之间取值。

赋值说明:对于素数判定还有一种特殊情况:对于任何主要是针对素数平方数而言。有如下变化,如7*7=49这种素数的平方数如果Q从1开始赋值,则没有解。但它的表现是在第1排第一个;Q赋1时,非常接近的表现为:(7-1)*(7+1),而从Q赋0值时,就有解。

取上限(Q/2+1)因为数的对称美。

5、对于偶数中,凡只有一个素数2叁与的运算的数,如:2*3*5*7,2*3,2*5等则没有因式分解。因为1与偶数中心和偶数本身三者无法构成等差数列。

6、公式中有两个未知量:当然不是为手动计算而设计,主要是利用计算机来算,最好是编程。

标签: #用c语言编程判断素数和奇数 #大数因数分解算法 #筛选法判断素数的依据 #生成大素数算法是什么 #生成大素数算法是什么方法