王朝百科
分享
 
 
 

亲和数

王朝百科·作者佚名  2010-03-03  
宽屏版  字体: |||超大  

亲和数是一种古老的数。

遥远的古代,人们发现某些自然数之间有特殊的关系:如果两个数a和b,a的所有真因数之和等于b,b的所有真因数之和等于a,则称a,b是一对亲和数。

据说,毕达哥拉斯(Pythagoras, 希腊文Πυθαγόρας,约前580年—前500年)的一个门徒向他提出这样一个问题:“我结交朋友时,存在着数的作用吗?”毕达哥拉斯毫不犹豫地回答:“朋友是你的灵魂的倩影,要象220和284一样亲密。”又说“什么叫朋友?就象这两个数,一个是你,另一个是我。”后来,毕氏学派宣传说:人之间讲友谊,数之间也有“相亲相爱”。从此,把220和284叫做“亲和数”或者叫“朋友数”或叫“相亲数”。这就是关于“亲和数”这个名称来源的传说。

毕达哥拉斯首先发现220与284就是一对亲和数,在以后的1500年间,世界上有很多数学家致力于探寻亲和数,面对茫茫数海,无疑是大海捞针,虽经一代又一代人的穷思苦想,有些人甚至为此耗尽毕生心血,却始终没有收获。公元九世纪,伊拉克哲学、医学、天文学和物理学家泰比特·依本库拉曾提出过一个求亲和数的法则,因为他的公式比较繁杂,难以实际操作,再加上难以辨别真假,故它并没有给人们带来惊喜,或者走出困境。数学家们仍然没有找到第二对亲和数。直到费尔马(P.de Fermat,1601-1665)才发现了另一对亲和数:17296和18416。

十六世纪,已经有人认为自然数里就仅有这一对亲和数。有一些无聊之士,甚至给亲和数抹上迷信色彩或者增添神秘感,编出了许许多多神话故事。还宣传这对亲和数在魔术、法术、占星术和占卦上都有重要作用等等。

距离第一对亲和数诞生2500多年以后,历史的车轮转到十七世纪,1636年,法国“业余数学家之王”费尔马找到第二对亲和数17296和18416,重新点燃寻找亲和数的火炬,在黑暗中找到光明。两年之后,“解析几何之父”——法国数学家笛卡尔(René Descartes)于1638年3月31日也宣布找到了第三对亲和数9437506和9363584。费马和笛卡尔在两年的时间里,打破了二千多年的沉寂,激起了数学界重新寻找亲和数的波涛。

在十七世纪以后的岁月,许多数学家投身到寻找新的亲和数的行列,他们企图用灵感与枯燥的计算发现新大陆。可是,无情的事实使他们省悟到,已经陷入了一座数学迷宫,不可能出现法国人的辉煌了。

正当数学家们真的感到绝望的时候,平地又起了一声惊雷。1747年,年仅39岁的瑞士数学家欧拉竟向全世界宣布:他找到了30对亲和数,后来又扩展到60对,不仅列出了亲和数的数表,而且还公布了全部运算过程。

欧拉采用了新的方法,将亲和数划分为五种类型加以讨论。欧拉超人的数学思维,解开了令人止步2500多年的难题,使数学家拍案叫绝。

时间又过了120年,到了1867年,意大利有一个爱动脑筋,勤于计算的16岁中学生白格黑尼,竟然发现数学大师欧拉的疏漏——让眼皮下的一对较小的亲和数1184和1210溜掉了。这戏剧性的发现使数学家如痴如醉。

在以后的半个世纪的时间里,人们在前人的基础上,不断更新方法,陆陆续续又找到了许多对亲和数。到了1923年,数学家麦达其和叶维勒汇总前人研究成果与自己的研究所得,发表了1095对亲和数,其中最大的数有25位。同年,另一个荷兰数学家里勒找到了一对有152位数的亲和数。

在找到的这些亲和数中,人们发现,亲和数发现的个数越来越少,数位越来越大。同时,数学家还发现,若一对亲和数的数值越大,则这两个数之比越接近于1,这是亲和数所具有的规律吗?人们企盼着最终的结论。

电子计算机诞生以后,结束了笔算寻找亲和数的历史。有人在计算机上对所有100万以下的数逐一进行了检验,总共找到了42对亲和数,发现10万以下数中仅有13对亲和数。但因计算机功能与数学方法的不够,目前还没有重大突破,但是,寻找亲和数未来正等待着不畏艰辛的数学家和计算机专家,同时,发现新的亲和数的捷报也正等待着不畏艰辛的数学家和计算机专家。

人们还发现每一对奇亲和数中都有3,5,7作为素因数。1968年波尔.布拉得利(P.Bratley)和约翰.迈凯(J.Mckay)提出:所有奇亲和数都是能够被3整除的。1988年巴蒂亚托(S.Battiato)和博霍(W.Borho)利用电子计算机找到了不能被3整除的奇亲和数,从而推翻了布拉得利的猜想。他找到了15对都不能被3整除的奇亲和数,最小的一对是:a=s*140453*85857199和b=s*56099*214955207其中s=5^4*7^3*11^3*13^2*17^2*19*61^2*97*107.将各个因数乘起来a=353804384422460183965044607821130625和b=353808169683169683168273495496273894069375.

它们都是36位大数。作为一个未解决的问题,巴蒂亚托等希望有人能找到最小的。另一个问题是是否存在一对奇亲和数中有一个数不能被3整除。

还有一个欧拉提出的问题,是否存在一对亲和数,其中有一个奇数,另一个是偶数?因为现在发现的所有奇偶亲和数要么都是偶数,要么都是奇数。200多年来尚未解决。

亲和数的研究主要有两方面:

(1)寻找新的亲和数。

(2)寻找亲和数的表达公式。

关于后一项工作,早在9世纪,阿拉伯的学者泰比特(TabitibnQorra)就提出了一个构造亲和数的公式:如果三个数:p=3*2^(n-1)-1,q=6*2^n-1,r=9*2^(2n-1)-1都是素数,且p,q>2,则2^npq和2^nr就是一对亲和数。例如,取n=2,得p=5,q=11,r=71,则2^2*5*11=220和2^2*71=284是一对亲和数。

例如:220和284,1184和1210,2620和2924,5020和5564,6232和6348。

亲和数列举:

ans =

220 284

ans =

1184 1210

ans =

2620 2924

ans =

5020 5564

ans =

6232 6368

ans =

10744 10856

ans =

12285 14595

ans =

17296 18416

ans =

63020 76084

ans =

66928 66992

ans =

67095 71145

ans =

69615 87633

ans =

79750 88730

ans =

100485 124155

ans =

122265 139815

ans =

122368 123152

ans =

141664 153176

ans =

142310 168730

ans =

171856 176336

ans =

176272 180848

ans =

185368 203432

ans =

196724 202444

ans =

280540 365084

ans =

308620 389924

ans =

319550 430402

ans =

437456 455344

ans =

469028 486178

ans =

503056 514736

ans =

522405 525915

ans =

600392 669688

ans =

609928 686072

ans =

624184 691256

ans =

635624 712216

ans =

643336 652664

ans =

667964 783556

ans =

726104 796696

ans =

802725 863835

ans =

879712 901424

ans =

898216 980984

ans =

947835 1125765

ans =

998104 1043096

ans =

1077890 1099390

ans =

1154450 1189150

ans =

1156870 1292570

ans =

1175265 1438983

ans =

1185376 1286744

ans =

1280565 1340235

ans =

1328470 1483850

ans =

1358595 1486845

ans =

1392368 1464592

ans =

1466150 1747930

ans =

1468324 1749212

ans =

1511930 1598470

ans =

1669910 2062570

ans =

1798875 1870245

ans =

2082464 2090656

ans =

2236570 2429030

ans =

2652728 2941672

ans =

2723792 2874064

ans =

2728726 3077354

ans =

2739704 2928136

ans =

2802416 2947216

ans =

2803580 3716164

ans =

3276856 3721544

ans =

3606850 3892670

ans =

3786904 4300136

ans =

3805264 4006736

ans =

4238984 4314616

ans =

4246130 4488910

ans =

4259750 4445050

ans =

4482765 5120595

ans =

4532710 6135962

ans =

4604776 5162744

ans =

5123090 5504110

ans =

5147032 5843048

ans =

5232010 5799542

ans =

5357625 5684679

ans =

5385310 5812130

ans =

5459176 5495264

ans =

5726072 6369928

ans =

5730615 6088905

ans =

5864660 7489324

ans =

6329416 6371384

ans =

6377175 6680025

ans =

6955216 7418864

ans =

6993610 7158710

ans =

7275532 7471508

ans =

7288930 8221598

ans =

7489112 7674088

ans =

7577350 8493050

ans =

7677248 7684672

ans =

7800544 7916696

ans =

7850512 8052488

ans =

8262136 8369864

ans =

8619765 9627915

ans =

8666860 10638356

ans =

8754130 10893230

ans =

8826070 10043690

ans =

9071685 9498555

ans =

9199496 9592504

ans =

9206925 10791795

ans =

9339704 9892936

ans =

9363584 9437056

ans =

9478910 11049730

ans =

9491625 10950615

ans =

9660950 10025290

ans =

9773505 11791935

ans =

10254970 10273670

ans =

10533296 10949704

ans =

10572550 10854650

ans =

10596368 11199112

ans =

10634085 14084763

ans =

10992735 12070305

ans =

11173460 13212076

ans =

11252648 12101272

ans =

11498355 12024045

ans =

11545616 12247504

ans =

11693290 12361622

ans =

11905504 13337336

ans =

12397552 13136528

ans =

12707704 14236136

最长链:

14316 - 19116 - 31704 - 47616 - 83328 - 177792 - 295488 - 629072 - 589786 - 294896 - 358336 - 418904 - 366556 - 274924 - 275444 - 243760 - 376736 - 318028 - 285778 - 152990 - 122410 - 97946 - 48976 - 45946 - 22976 - 22744 - 19916 - 17716 - 14316

附:用计算机编出的计算亲和数的JAVA程序

import java.util.ArrayList; import java.lang.Math; import java.lang.Double;

public class love_num {

public static void main(String[] args)

{

int intMain = 2;

int intBig = 0;

try

{

intBig = Integer.parseInt(args[0].toString());

}

catch (Exception e)

{

System.out.println("error:" + e);

System.out.println("type command like "java love_num 50"");

return;

}

while (true)

{

ArrayList listYakuSu1 = findYakuSu(intMain);

int intSum1 = addYakuSu(listYakuSu1);

//String strDebug = "";

//String strDebug2 = "";

if ( intSum1 == intMain )

{

System.out.println("self num:" + intSum1);

//for (int i = 0; i < listYakuSu1.size(); i ++)

//{

// strDebug += listYakuSu1.get(i);

// strDebug += ",";

//}

//System.out.println("YakuSu:" + strDebug);

}

else

{

ArrayList listYakuSu2 = findYakuSu(intSum1);

int intSum2 = addYakuSu(listYakuSu2);

if ( intSum2 == intMain )

{

System.out.println("love num:" + intMain + "--" + intSum1);

//for (int i = 0; i < listYakuSu1.size(); i ++)

//{

// strDebug += listYakuSu1.get(i);

// strDebug += ",";

//}

//System.out.println("YakuSu:" + strDebug);

//for (int i = 0; i < listYakuSu2.size(); i ++)

//{

// strDebug2 += listYakuSu2.get(i);

// strDebug2 += ",";

//}

//System.out.println("YakuSu:" + strDebug2);

}

}

intMain ++;

if (intMain > intBig)

{

return;

}

}

}

public static int addYakuSu (ArrayList listYakuSu)

{

//System.out.println("addYakuSu start ");

int sum = 0;

int temp = 0;

for (int i = 0; i < listYakuSu.size() ; i ++ )

{

temp = Integer.parseInt(listYakuSu.get(i).toString());

sum += temp;

}

//System.out.println("addYakuSu end " + sum);

//System.out.println("");

return (sum);

}

public static ArrayList findYakuSu (int intNum)

{

//String strDebug = "";

//System.out.println("findYakuSu start " + intNum);

ArrayList listYakuSu = new ArrayList();

double dbNum = (double)intNum;

double dbRoot = Math.sqrt(dbNum);

Double d = new Double(dbRoot);

int intRoot = d.intValue() ;

//System.out.println("root:" + intRoot);

// if (intHalf * 2 == intNum)

// {

// }

// else

// {

// intHalf ++;

// }

listYakuSu.add ("1");

for (int i = 2; i <= intRoot ; i ++)

{

int intPart = intNum/i;

if (intPart * i == intNum)

{

if (intPart == i)

{

listYakuSu.add (Integer.toString(i));

//strDebug += Integer.toString(i);

//strDebug += ",";

}

else

{

listYakuSu.add (Integer.toString(i));

listYakuSu.add (Integer.toString(intPart));

//strDebug += Integer.toString(i);

//strDebug += ",";

//strDebug += Integer.toString(intPart);

//strDebug += ",";

}

}

}

//System.out.println("findYakuSu end:1," + strDebug);

//System.out.println("");

return (listYakuSu);

}

}

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如何用java替换看不见的字符比如零宽空格&#8203;十六进制U+200B
 干货   2023-09-10
网页字号不能单数吗,网页字体大小为什么一般都是偶数
 干货   2023-09-06
java.lang.ArrayIndexOutOfBoundsException: 4096
 干货   2023-09-06
Noto Sans CJK SC字体下载地址
 干货   2023-08-30
window.navigator和navigator的区别是什么?
 干货   2023-08-23
js获取referer、useragent、浏览器语言
 干货   2023-08-23
oscache遇到404时会不会缓存?
 干货   2023-08-23
linux下用rm -rf *删除大量文件太慢怎么解决?
 干货   2023-08-08
刀郎新歌破世界纪录!
 娱乐   2023-08-01
js实现放大缩小页面
 干货   2023-07-31
生成式人工智能服务管理暂行办法
 百态   2023-07-31
英语学习:过去完成时The Past Perfect Tense举例说明
 干货   2023-07-31
Mysql常用sql命令语句整理
 干货   2023-07-30
科学家复活了46000年前的虫子
 探索   2023-07-29
英语学习:过去进行时The Past Continuous Tense举例说明
 干货   2023-07-28
meta name="applicable-device"告知页面适合哪种终端设备:PC端、移动端还是自适应
 干货   2023-07-28
只用css如何实现打字机特效?
 百态   2023-07-15
css怎么实现上下滚动
 干货   2023-06-28
canvas怎么画一个三角形?
 干货   2023-06-28
canvas怎么画一个椭圆形?
 干货   2023-06-28
canvas怎么画一个圆形?
 干货   2023-06-28
canvas怎么画一个正方形?
 干货   2023-06-28
中国河南省郑州市金水区蜘蛛爬虫ip大全
 干货   2023-06-22
javascript简易动态时间代码
 干货   2023-06-20
感谢员工的付出和激励的话怎么说?
 干货   2023-06-18
 
>>返回首页<<
 
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有