回 帖 发 新 帖 刷新版面

主题:黑洞数的验证

黑洞数又称陷阱数,是类具有奇特转换特性的整数。
任何一个数字不全相同整数,经有限次“重排求差”操作,总会得某一个或一些数,这些数即为黑洞数。"重排求差"操作即组成该数得排后的最大数去重排的最小数。
我在一份科学杂志上看到印度数学家研究过四位黑洞数,得到的黑洞数为6174。我拿来用程序验证这一下这个黑洞数。
/*验证四位黑洞数*/
sub(i)
int i;
{int p,kj,h,max,min,a[5];
a[1]=i/1000;a[2]=(i/100)%10;
a[3]=(i%100)/10;
a[4]=i%10
for (a=1;a<=3;a++)
  for (b=a+1;b<=4;b++)
   if{(a[a]<a[b]);gg=a[a];a[k]=a[b];a[b]=gg;}
max=a[1]*1000+a[2]*100+a[3]*10+a[4]
min=a[4]*1000+a[3]*100+a[2]*10+a[1]
p=man-min
return(p);
}

main()
{int n,y,i,m;
printf("\n所有四位数经重排求差操作,可至6174或0.");
for (y=0,n=1000;n<=9999;n++)
   {i=n;m=0;
    while (i!=6174 && i!=0)
    {i=sub(i);m++;}
     if(m>y) y=m;}
pintf("\n验证全可转换最多转换次数为:%d\n",y);
printf("需要看某数的转换过程,请输入该数,否则输入0:");
scanf("%d",&i);
if(i=0) exit(0);
printf("%d",i);
while(!=6174 && i!=0)
{i=sub(i);printf("  ->%d",i);}
}
  注:
   若四位数i的四个数字全同,一次转即为0.因而,可把0到6174一并作为判别条件.  
各位朋友看了以后,如果有好的意见请与我连系,ok???
  E-mail:dspxxx.163.com
                                         

回复列表 (共10个回复)

沙发

我看过一篇文章,也是说什么黑洞数的,思路跟你所说的差不多,而且它说一个四位数,不超出7步,就一定会进入黑洞数了.

板凳

长见识

3 楼

我也研究过。有的数虽然不是黑洞数,但是经过多次运算后还可能出现循环。

4 楼


[fly]口呀~![/fly]

5 楼

不只局限于四位吧!

6 楼

不只局限于四位吧!

7 楼

真好呀
我没见过》

8 楼

不会所有数最终都会陷入陷阱吧!

9 楼

你在那一本杂志上看到的?

10 楼

黑洞数不只是4位 3位数为495 指的是非各位全相同的数(非111,2222)经过运算后最终陷入死循环,5位数也有黑洞,不过不是一个数,是多个数组成的循环,而且有两个这样的循环。

我来回复

您尚未登录,请登录后再回复。点此登录或注册