回歸數

回歸數

回歸數:其值等於各位數字的 n 次冪之和的 n 位數,稱為 n 位 n 次冪回歸數。

基本介紹

  • 中文名:回歸數
  • 性質:數學概念
  • 命名人:英國大數學家哈代
  • 定義: 位 n 次冪回歸數
難題及證明,編程,

難題及證明

英國大數學家哈代(G.H.Hardy,1877-1947)曾經發現過一種有趣的現象:
153=1^3+5^3+3^3 371=3^3+7^3+1^3 370=3^3+7^3+0^3 407=4^3+0^3+7^3
*註: 1^3代表1的3次方。其他類同。
他們都是三位數且等於各位數字的三次冪之和,這種巧合不能不令人感到驚訝.更為稱奇的是,一位讀者看過哈代的有趣發現後,竟然構造出其值等於各位數字四(五,六)次冪之和的四(五,六)位數:
1634=1^4+6^4+3^4+4^4 54748=5^5+4^5+7^5+4^5+8^5 548834=5^6+4^6+8^6+8^6+3^6+4^6
像這種其值等於各位數字的 n 次冪之和的 n 位數,稱為 n 位 n 次冪回歸數.本文只討論這種回歸數,故簡稱為回歸數,人們自然要問:對於什麼樣的自然數 n 有回歸數?這樣的 n 是有限個還是無窮多個?對於已經給定的 n ,如果有回歸數,那么有多少個回歸數?
1986年美國的一位數學教師安東尼.迪拉那(Anthony Diluna)巧妙地證明了使 n 位數成為回歸數的 n 只有有限個.
設 An 是這樣的回歸數,即:
An=a1a2a3...an=a1^n+a2^n+...+an^n (其中 0<=a1,a2,...an<=9)
從而 10^(n-1)<=An<=n*9^n 即 n 必須滿足 n*9^n>10^(n-1) 也就是 (10/9)^n<10*n ⑴
隨著自然數 n 的不斷增大,(10/9)^n 值的增加越來越快,很快就會使得 ⑴ 式不成立,因此,滿足⑴的 n 不能無限增大,即 n 只能取有限多個.進一步的計算表明:
(10/9)^60=556.4798...<10*60=600 (10/9)^61=618.3109...>10*61=610
對於 n>=61,便有 (10/9)^n>10*n
由此可知,使⑴式成立的自然數 n<=60.故這種回歸數最多是60位數.迪拉那說,他的學生們早在1975年藉助於哥倫比亞大學的計算機得到下列回歸數:
一位回歸數:1,2,3,4,5,6,7,8,9
二位回歸數:不存在
三位回歸數:153,370,371,407
四位回歸數:1634,8208,9474
五位回歸數:54748,92727,93084
六位回歸數:548834
七位回歸數:1741725,4210818,9800817
八位回歸數:24678050,24678051
但是此後對於哪一個自然數 n (<=60)還有回歸數?對於已經給定的 n ,能有多少個回歸數?最大的回歸數是多少?

編程

有一C語言題目:要求輸入整數m n.(0<m<n<70000000)求出m到n之間所有的回歸數。我編了一個,但算法不夠科學,以3.8G的賽揚D來跑,算到24678051以後就等很久很久都出不了下一個結果。求更優的算法。我的代碼及運算結果如下。#include<stdio.h>main(){long m,n,i,j,l,s; int a,b,c,d=0; do {printf("\nPlease Input the m n:(10<m<n<70000000)\n"); scanf("%ld %ld",&m,&n); }while(m<=0||n<=0||m>=70000000||n>=70000000||m>=n); printf("\nThe Answer is:\n"); for(i=m;i<n;i++) {j=i;c=0;s=0; while(j>0) {j=j/10;c++;} j=i; while(j>0) {a=j%10;j=j/10;l=1; for(b=0;b<c;b++) l=l*a; s+=l; } if(s==i) {printf("%ld\t",i); d++; if(d%4==0) printf("\n"); } } printf("\nPress Any Key to Exit.");getch();

相關詞條

熱門詞條

聯絡我們