当前位置:首页 » 编程语言 » 用c语言做495黑洞陷阱
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

用c语言做495黑洞陷阱

发布时间: 2023-05-24 04:59:42

c语言,任何一个数字不全相同的三位数,经有限次“重排求差”操作,总得到495。所得的495即为三位黑洞数

/*重写了一个,因为用你的变量定义排序很麻烦,而且你的变量使用有点儿乱*/
#include<stdio.h>
//#include"stdlib.h"
intmain(void)
{
intd[4],n;
inti,j,t,max,min,k,num;
printf("Inputaninteger:");
scanf("%d",&n);
num=0;
do
{
d[2]=n%10;
d[1]=(n/10)%10;
d[0]=(n/100);
if(d[0]==d[1]&&d[1]==d[2])
{
printf("InputERROR!");
return0;
}
//按位降序,并求出最大数和最小数
max=0;
min=0;
k=1;
for(i=0;i<=2;i++)
{
for(j=2;j>i;j--)
{
if(d[j]>d[j-1])
{
t=d[j];d[j]=d[j-1];d[j-1]=t;
}
}
max=max*10+d[i];
min=min+d[i]*k;
k=k*10;
}
n=max-min;
printf("%d-%d=%d ",max,min,n);
//system("pause");
num+=1;
}while(n!=495);
printf("number:%d",num);
return0;
}

㈡ 求C语言高手帮忙,做一个程序,求出1~50000内的所有“黑洞数”。谢谢了!(内有关于黑洞数的东西)

想了很久,在VC++6.0中调试了差不多半天,现在把求三位数和四位数中的黑洞数的程序写出来了(按定义可知一位和二位数中不存在黑洞数),现在贴出来供大家批评指正:(五位数中黑洞数的求解代码待续)

#include <iostream>
#include <stdio.h>
using namespace std;

int maxof3(int,int,int); //求三位数重排后的最大数
int minof3(int,int,int); //求三位数重排后的最小数
int maxof4(int,int,int,int); //求4位数重排后的最大数
int minof4(int,int,int,int); //求4位数重排后的最大数
void main()
{
int i;
for(i=100;i<=999;i++) //求三位数中的黑洞数
{
int hun,oct,data,max,min,j;
hun=i/100; oct=i%100/10; data=i%10;
max=maxof3(hun,oct,data);
min=minof3(hun,oct,data);
j=max-min;
hun=j/100; oct=j%100/10; data=j%10;
if(min==minof3(hun,oct,data))
cout<<i<<" is a blackhole number!"<<endl;
}
for(i=1000;i<=9999;i++) //求四位数中的黑洞数
{
int t,h,d,a,max,min,j;
t=i/1000; h=i%1000/100; d=i%100/10; a=i%10;
max=maxof4(t,h,d,a);
min=minof4(t,h,d,a);
j=max-min;
t=j/1000; h=j%1000/100; d=j%100/10; a=j%10;
if(min==minof4(t,h,d,a))
cout<<i<<" is a blackhole number !"<<endl;
}
}
int maxof3(int a,int b,int c)
{
int t;
t=a;
if(b>t)
{t=b;b=a;a=t;}
if(c>t)
{t=c;c=b;b=a;a=t;}
else
{if(c>b)
{t=c;c=b;b=t;}
}
return(a*100+b*10+c);
}

int minof3(int a,int b,int c)
{

int t;
t=a;
if(b>t)
{t=b;b=a;a=t;}
if(c>t)
{t=c;c=b;b=a;a=t;}
else
{if(c>b)
{t=c;c=b;b=t;}
}
return(c*100+b*10+a);
}

int maxof4(int a,int b,int c,int d)
{
if(a<b)
{a=a^b;b=a^b;a=a^b;}
if(c<d)
{c=c^d;d=c^d;c=c^d;}
if(a<c)
{a=a^c;c=a^c;a=a^c;}
if(b<d)
{b=b^d;d=b^d;b=b^d;}
if(b<c)
{b=b^c;c=b^c;b=b^c;}
return(a*1000+b*100+c*10+d);
}

int minof4(int a,int b,int c,int d)
{
if(a<b)
{a=a^b;b=a^b;a=a^b;}
if(c<d)
{c=c^d;d=c^d;c=c^d;}
if(a<c)
{a=a^c;c=a^c;a=a^c;}
if(b<d)
{b=b^d;d=b^d;b=b^d;}
if(b<c)
{b=b^c;c=b^c;b=b^c;}
return(d*1000+c*100+b*10+a);
}

另外谢了一个求解五位数中的黑洞数的程序,把部分代码复制到上面那个文件中就可以了:
#include <iostream>
using namespace std;

int maxof5(int,int,int,int,int);
int minof5(int,int,int,int,int);

void main()
{
int i;
for(i=10000;i<=50000;i++)
{
int dt,t,h,d,a,max,min,j;
dt=i/10000; t=i%10000/1000; h=i%1000/100; d=i%100/10; a=i%10;
max=maxof5(dt,t,h,d,a);
min=minof5(dt,t,h,d,a);
j=max-min;
dt=j/10000; t=j%10000/1000; h=j%1000/100; d=j%100/10; a=j%10;
if(min==minof5(dt,t,h,d,a))
cout<<i<<" is a blackhole number!"<<endl;
}
cout<<"maxof5(5,2,1,8,3) is : "<<maxof5(5,2,1,8,3)<<endl; //这行是测试用的
cout<<"minof5(5,2,1,8,3) is : "<<minof5(5,2,1,8,3)<<endl; //这行是测试用的,看看求解函
//数是否正确
}

int maxof5(int a,int b,int c,int d,int e)
{
int t;
if(a<b)
{a=a^b;b=a^b;a=a^b;}
if(c<d)
{c=c^d;d=c^d;c=c^d;}
if(a<c)
{a=a^c;c=a^c;a=a^c;}
if(b<d)
{b=b^d;d=b^d;b=b^d;}
if(b<c)
{b=b^c;c=b^c;b=b^c;}
if(e<=d)
{}
else
if(d<=e&&e<c)
{t=d;d=e;e=t;}

else
if(c<=e&&e<b)
{t=c;c=e;e=d;d=t;}
else
if(b<=e&&e<a)
{t=b;b=e;e=d;d=c;c=t;}
else
if(a<=e)
{t=a;a=e;e=d;d=c;c=b;b=t;}
else {cout<<"please check the program!"<<endl;}
return(a*10000+b*1000+c*100+d*10+e);
}

int minof5(int a,int b,int c,int d,int e)
{
int t;
if(a<b)
{a=a^b;b=a^b;a=a^b;}
if(c<d)
{c=c^d;d=c^d;c=c^d;}
if(a<c)
{a=a^c;c=a^c;a=a^c;}
if(b<d)
{b=b^d;d=b^d;b=b^d;}
if(b<c)
{b=b^c;c=b^c;b=b^c;}
if(e<=d)
{}
else
if(d<=e&&e<c)
{t=d;d=e;e=t;}

else
if(c<=e&&e<b)
{t=c;c=e;e=d;d=t;}
else
if(b<=e&&e<a)
{t=b;b=e;e=d;d=c;c=t;}
else
if(a<=e)
{t=a;a=e;e=d;d=c;c=b;b=t;}
else {cout<<"please check the program!"<<endl;}
return(e*10000+d*1000+c*100+b*10+a);
}

㈢ C语言初学者 帮忙找错

我直接在你的程序里做注释和修改吧
#include <stdio.h>
#include <conio.h>
void main()
{
int i,a,b,c,p,q,n;
int max (int x1,int y1,int z1);
int middle (int x2,int y2,int z2);
int min (int x3,int y3,int z3);
printf("Please input i:");
scanf("%d",i);
a=i/100;b=i%100/10;c=i%10;
p=100*max(a,b,c)+10*middle(a,b,c)+min(a,b,c);
q=100*min(a,b,c)+10*middle(a,b,c)+max(a,b,c);
while (n!=495) {n=p-q;printf("%d ",n);} //这里有三个错误,第一是,n没有付值,第二是,当n!=495时,输入了n。这样,就不能够输入495了。第三是,循环体里面没办法求出你需要的东西。
//下面是我的我用{//}分铅明兆开
{/
for(n=p-q;n!=495;n=p-q)

printf(”%d”,&n);
a=i/100;b=i%100/10;c=i%10;
p=100*max(a,b,c)+10*middle(a,b,c)+min(a,b,c);
q=100*min(a,b,c)+10*middle(a,b,c)+max(a,b,c);

printf(”%d”,&n);
/}

getch();
}

int max (int x1,int y1,int z1)
{
int e;
if (x1>y1) e=x1;else e=y1;
if (e<z1) {e=z1;return(e);}
else return(e);
}

int min (int x2,int y2,int z2)
{
int e;
if (x2<y2) e=x2;else e=y2;
if (e>z2) {e=z2;return(e);}
else return(e);
}

int middle (int x3,int y3,int z3)
{
int e;
if ((x3-y3)<0 && (x3-z3)>0) {e=x3;return(e);}
if ((y3-x3)<0 && (y3-z3)>0) {e=x3;return(e);}
if ((z3-x3)<0 && (z3-y3)>0) {e=x3;return(e);}
}//这里也有点错误,有没有留意,每次你都是返回了x3;
应该相对槐陪应改槐租为,y3,z3;
上面的代码请不要直接复制到c语言编辑器里面,因为字体问题,可能导致编译出错。麻烦一个一个打进去。谢谢

㈣ 数字"黑洞"

黑洞数又称陷阱数,是类具有奇特转换特性的整数。 任何一个数字不全相同整数,经有限“重排求差”操作,总会得某一个或一些数,这些数即为黑洞数。"重排求差"操作即组成该数得排后的最大数去重排的最小数。

举个例子,三位数的黑洞数为495

简易推导过程:随便找个数,如297,三个位上的数从小到大和从大到小各排一次,为972和279,相减,得693

按上面做法再做一次,得到594,再做一次,得到495

之后反神颤歼复都得到495

再如,四位数的黑洞数有6174

神秘的6174-黑洞数

随便造一个游冲四位数,如a1=1628,先把组成部分1628的四个数字由大到小排列得到a2=8621,再把1628的四个数字由小到大排列得a3=1268,用大的减去小的a2-a1=8621-1268=7353,把7353按上面的方法再作一遍,由大到小排列得7533,由小到大排列得3357,相减7533-3367=4176
把4176再重复一遍:7641-1467=6174。
如果再往下作,奇迹就出现了!7641-1467=6174,又回到6174。
这是偶然的吗?我们再随便举一个数1331,按上面的方法连续去做:
3311-1133=2178 8721-1278=7443 7443-3447=3996 9963-3699=6264
6624-2466=4174 7641-1467=6174

好啦!6174的“幽灵”又出现了,大家不妨试一试,对于任何一个数字不完全的四位数,最多运算7步,必然落入陷阱中。

这个黑洞数已经由印度数学家证明了。

在数学中由有很多有趣,有意义的规律等待我们去探索和研究,让我们在数学中得到更多的乐趣。
苏联的科普作家高基莫夫在他的着作《数学的敏感》一书中,提到了一个奇妙的四位数6174,并把它列作“没有揭开的秘密”。不过,近年来,由于数学爱好者的努力,已经开始拨开迷雾。

6174有什么洞岁奇妙之处?

请随便写出一个四位数,这个数的四个数字有相同的也不要紧,但这四个数不准完全相同,例如 3333、7777等都应该排除。

写出四位数后,把数中的各位数字按大到小的顺序和小到大的顺序重新排列,将得到由这四个数字组成的四位数中的最大者和最小者,两者相减,就得到另一个四位数。将组成这个四位数的四个数字施行同样的变换,又得到一个最大的数和最小的数,两者相减……这样循环下去,一定在经过若干次(最多7次)变换之后,得到6174。

例如,开始时我们取数8208,重新排列后最大数为8820,最小数为0288,8820—0288=8532;对8532重复以上过程:8532-2358=6174。这里,经过两步变换就掉入6174这个“陷阶”。

需要略加说明的是:以0开头的数,例如0288也得看成一个四位数。再如,我们开始取数2187,按要求进行变换:

2187 → 8721-1278=7443→7443-3447=3996→9963-3699=6264→6642-2466=4176→7641-1467=6174。

这里,经过五步变换就掉入了“陷阱”——6174。

拿6174 本身来试,只需一步:7641-1467=6174,就掉入“陷阱”祟也出不来了。

所有的四位数都会掉入6174设的陷阱,不信可以取一些数进行验证。验证之后,你不得不感叹6174的奇妙。

任何一个数字不全相同整数,经有限次“重排求差”操作,总会得某一个或一些数,这些数即为黑洞数。"重排求差"操作即组成该数得排后的最大数去重排的最小数。

黑洞数的性质及应用

【摘要】本文提出建立了黑洞数的概念,分别对整数黑洞数、模式黑洞数、方幂余式黑洞数的一般性质做了阐述。并给出了二元一次方程 ax- by- c =0的求根法则。

【关键词】 黑洞数、 整数黑洞数 、 模式黑洞 数 、方幂余式黑洞数。

【引言】 在日常学习计算中,化简含有未知数的代数式或方程经常会得到x-x=0之结果。此前,人们只是把这种情况定义为“此算式没有意义”而终结。黑洞数理论的出现 ,让人们看到了代数式或方程中未知数可任意取值时的另一层含义。本文提出证明的方幂余式黑洞数定理,揭示出a, m不互素条件下的余数循环规律,它将与欧拉余数定理互为补充,构造出全体整数的方幂式除法余数运算法则。本文给出的二元一次方程ax-by-c=0的求根公式,将成为余数新理论应用的一个范例。

定义1、在含有未知数变量的代数式中,当未知数变量任意取值时其运算结果都不改变,我们把这时的数字结果叫黑洞数。根据运算性质的不同,我们把黑洞数分为以下三种类型:Ⅰ、整数黑洞数 Ⅱ、模式黑洞数 Ⅲ、方幂余式黑洞数

Ⅰ、整数黑洞数

在前文《模根因数定理与模根剩余法判定素数》中,在建立选加因数概念后,我们证明了整数因数定理:
若a、b都是大于1的整数,且有g = ab,则有:
g+an=a(b+n)
其中 : n = 0、1、2、3……
根据整数因数定理,我们即可得到如下整数黑洞数
ab+an
--------------- = a
b+n
其中: n = 0、1、2、3 ……
这里,不论未知变量怎样取值,上式的结果都等于a.。
例如:取a=7, b=3,ab=21, 则有:
21+7n
---------------- = 7
3+n
其中: n = 0、1、2、3 ……
应用方面的例子:
全体偶数 = 2 (n) + 2, ( n = 0、1、2、3 ……)

自然数中的全部合数 = 4 +2n + h(2+n)
其中: n = 0、1、2、3 ……
对n的每个取值都重复取
h = 0、1、2、3 ……
Ⅱ、模式黑洞数
模式黑洞数是指模的同余式mn+L条件下的黑洞数。 在前文《模根因数定理与模根剩余法判定素数》一文中,模根因数定理(1)式:
若 a>1, b>1,且 ab = mk + L,则有:
m(k+aN)+L
-------------------------- = a
b+mN
其中:N = 0、1、2、3 ……
这时的a值就是模式黑洞数。
应用实例:
取a=7, b=13, 则 ab= 91=mk + L = 2×45×1
2(45+7N)+1
根据上式得到:-------------------------- =7
13+2N
其中:N = 0、1、2、3 ……
应用实例:素数通式定理
若ap是同余式2N+1模根数列的条件剩余数,
当 ap ≠ 4 + 3n + h (3 +2n ) 时
其中:n = 0、1、2、3 ……
对n的每个取值都重复取
h = 0、1、2、3 ……
则条件通式 2+1 的值恒是素数。
模式黑洞数性质是我们建立素数代数理论体系的根本前提。
Ⅲ、方幂余式黑洞数
在方幂余式除法 a^n÷m ≡L关系中,当得到 L^n÷m ≡L 时 (n = 1、2、3 ……), 我们称这时的L为因数a的m值黑洞数。
例如:在 3×5 = 15 关系时
我们得到: 3^4÷15 ≡ 6
这时有: 6^n÷15 ≡ 6 (n = 1、2、3 ……)
所以我们称6是因数3的15值的方幂余式黑洞数。
为了方便,我们引入符号 ⊙(m)a = L 来表示方幂余式黑洞数关系。即上式结果可表示为 ⊙(15)3 = 6,符号“⊙”在这里读作黑洞数。
下面我们将证明方幂余式黑洞数定理;
定理1: 如a>1, b>1,(a ,b)=1 且 ab = m ;
则有:a^ф(b)≡⊙ (mod m)
即这时:⊙^n ≡⊙ (mod m)
其中:n = 1、2、3 ……
证:我们分别对b为素数,b为素数乘方,b为多个素数乘积时的情况加以证明。
当b为素数时:
取a=7, b=19, 则 ab = 7×19 = 133
由定理关系得到:
7^ф(19)=7^18≡77 (mod 133)
而 77^n≡77 (mod 133) 此时定理关系成立
当b为素数的n次乘方时:
取 a = 7, b=5^2=25, 则 ab = 7×25 = 175
由定理关系得到:
7^ф(25)=7^20≡126 (mod 175)
而 126^n≡126 (mod 175) 此时定理关系也成立
当b为多个素数乘积时:
取 a = 7, b= 3×11=33,则 ab = 7×33 = 231
由定理关系得到:
7^ф(33)=7^20≡133 (mod 231)
而 133^n≡133 (mod 231) 所述定理关系式成立
故定理1得证
方幂余式黑洞数的一些性质及应用:
1、因数a的黑洞数减1的平方除m的余数是因数b的黑洞数;
即:如 ⊙(m)a = e1, 则 (e1-1)^2÷m ≡ e2 = ⊙(m)b
2、m所含黑洞数的个数等于m所含素因数个数做为2底方次数减2;
即:m为素数没有黑洞数
m有2个素因子时有2^2-2 = 2个黑洞数
m含有3个素因子时有2^3-2 = 6个黑洞数
3、在m定值后,如果把全部 an (n = 1、2、3 …… 但n≠b) 值都做为底数,这时的
a^c÷m≡⊙的c值变化规律。与m的余数循环节a^c÷m≡1规律具有相同的变节和不变节特性。
即: 若 7^10≡⊙ (mod m) 关系成立,
则 (7^2)5≡⊙ (mod m) 关系也成立;
应用方面的例子:
若 b>c ,我们有以下二元一次方程 ax -by -c = 0 求根法则:
首先: 取 ab = m
计算: a^ф(b)÷m ≡ ⊙
计算: ⊙×c ÷m ≡S1
计算: (⊙-1)×c ÷m ≡S2
x =S1÷a
这时
y =S2÷b
这时的 x,y 值是方程的最小整数根。
但方程 ax- by- c = 0 有无限多组整数根,它的全部整数根集可表示为:
x = S1÷a + b n
y = S2÷b + a n
其中:n = 0、1、2、3 ……
实例1:求方程 13x- 7y -3 = 0 的最小整数根和全部整数根?
首先: 取13×7 = 91
计算: 13^ф(7)=13^6÷91 ≡ 78
计算: 78×3÷91 ≡52
计算: (78-1)×3÷91 ≡49
x =52÷13=4
这时
y =49÷7=7
这时的 x,y 值是方程的最小整数根。
但方程 ax- by- c = 0 有无限多组整数根,它的全部整数根集可表示为:
x = 4 + 7n
y = 7 + 13n
其中:n = 0、1、2、3 ……
实例2:求方程 13x- 8y +4 = 0 的最小整数根和全部整数根?
首先: 取13×8 = 104
计算: 13^ф(8)=13^4÷91 ≡ 65
计算: 65×(-4)÷104 ≡ -52≡52
计算: (65-1)×(-4)÷104 ≡ -48≡56
x =52÷13=4
这时
y =56÷8=7
这时的 x,y 值是方程的最小整数根。
但方程 13x- 8y +4 = 0 有无限多组整数根,它的全部整数根集可表示为:
x = 4 + 8n
y = 7 + 13n
其中:n = 0、1、2、3 ……
随着时间的推移,相信人们会看到黑洞数理论的更多成果。

㈤ C语言出错验证3位黑洞数

#include<stdio.h>

int sub(int i)

{

int p,k,j,h,max,min,a[4];

a[1]=i/100;

a[2]=(i/10)%10;a[3]=i%10;

for(k=1;k<=2;k++)

for(j=k+1;j<=3;j++)

if(a[k]<a[j])

{ h=a[k];a[k]=a[j];a[j]=h; }

max=a[1]*100+a[2]*10+a[3];

min=a[3]*100+a[2]*10+a[1];

p=max-min;

if(p<100 && p/10==p%10) p=0;

return (p);

}

int main()

{

int n,n1,y,i,m;

printf(" 验证任意3位数'重排求差'操作,可于495或0.");

for(y=0,n=101;n<=999;n++)//修改n的取值范围,可求出最多的转换次数

{

i=n;m=0;

while(i!=495 && i!=0)

{ i=sub(i);m++; }

if(m>y) { y=m;n1=n; }

}

printf(" 当n=%d时,最多转换%d次可至495或0:",n1,y);

printf(" %d",n1);

i=n1;

while(i!=495 && i!=0)

{ i=sub(i);printf("->%d",i); }

return 0;

}

㈥ C语言或C++的 数学黑洞问题,我好像陷入了死循环。求帮忙

当J=0时,第二个for语句中的i<4-j也就是i<4,i++,这样的话i最大可以达到3
而在下面的语句中有个S[i+1]也就是S[4],这意味着数组的长度是5个,而你只定义了4的长度
数组长度溢出了
而且那个前后调换的函数貌似也有问题
应该是s[i]=s[i+1]而不是s[j]=s[i+1]
i 和 j 打错了是不是

㈦ C语言中的一道题数字黑洞:

没有去考虑你的逻辑,但至少有一处你错了,
main函数中,数组a没有指定大小,不能a[n]企图通过输入的n随时改变数组的大小。必须在运行前就指定。

㈧ 关于黑洞数的编程(学不好C语言的娃儿,求教)

上面的回答很正确,要改一下这儿:

if(a>b)swap(&a,&b);

if(a>c)swap(&a,&c);

if(b>c)swap(&b,&c);

此程序就是输入一个3位数,然后,把该三位数的3个数字变换顺序使变成最小的数和最大的数,输出两者之差,然后把这个差中的3位数调换顺序,使之变成最小的数和最大的数,再把两者的差值输出。比如说输入数为123,则第一个数为:321-123=198,第二个数为:981-189=792,第三个数为:972-279=693,第四个数为:963-369=594,以此类推,直到输出8个数为止。

㈨ 关于数字黑洞495和6174 卡布列克运算(初一的作业)的验证

设M是一个四位数而且四个数字不全相同,把M的数字按递减的次序排列,
记作M(减);
然后再把M中的数字按递增次序排列,记作M增,记差M(减)-M(增)=D1,从M到D1是经过上述步骤得来的,我们把它看作一种变换,从M变换到D1记作:T(M)= D1把D1视漏察作M一样,按上述法则做减法得到D2 ,也可看作是一种返胡茄变换,把D1变换成D2,
记作:T(D1)= D2
同样D2可以变换为D3;D3变换为D4……,既T(D2)= D3, T(D3)= D4……
现在我们要证明,至多是重复7次变换就得D7=6174。
证:四位数总共有104=10000个,其中除去四个数字全相同的,余下104-10=9990个数字不全相同.我们首先证明,变换T把这9990个数只变换成54个不同的四位数.
设a、b、c、d是M的数字,并令:
a≥b≥c≥d
因为它们不全相等,上式中的等号不能同时成立.我们计算T(M)
M(减)=1000a+100b+10c+d
M(增)=1000d+100c+10b+a
T(M)= D1= M(减)-M(增)=1000(a-d)+100(b-c)+10(c-b)+d-a=999(a-d)+90(b-c)
我们注意到T(M)仅依赖于(a-d)与(b-c),因为数字a,b,c,d不全相等,因此由a≥b≥c≥d可推出;a-d>0而b-c≥做伏0.
此外b、c在a与d之间,所以a-d≥b-c,这就意味着a-d可以取1,2,…,9九个值,并且如果它取这个集合的某个值n,b-c只能取小于n的值,至多取n.
例如,若a-d=1,则b-c只能在0与1中选到,在这种情况下,T(M)只能取值:
999×(1)+90×(0)=0999
999×(1)+90×(1)=1089
类似地,若a-d=2, T(M)只能取对应于b-c=0,1,2的三个值.把a-d=1,a-d=2,…,a-d=9的情况下b-c所可能取值的个数加起来,我们就得到2+3+4+…+10=54
这就是T(M)所可能取的值的个数.在54个可能值中,又有一部分是数码相同仅仅是数位不同的值,这些数值再变换T(M)中都对应相同的值(数学上称这两个数等价),剔除等价的因数,在T(M)的54个可能值中,只有30个是不等价的,它们是:
9990,9981,9972,9963,9954,9810,9711,9621,9531,9441,8820,8730,8721,8640,8622,8550,
8532,8442,7731,7641,7632,7551,7533,7443,6642,6552,6543,5553,5544.
对于这30个数逐个地用上述法则把它换成最大与最小数的差,至多6步就出现6174这个数.证毕.参考资料:http://ke..com/view/406175.html?wtp=tt

㈩ c语言 黑洞数

#include<stdio.h>

intmain(void)

{

intnumber,x,y,a,b,c,t,i,max,min,mid;

scanf("%d",&number);i=1;

while(number!=495){

a=number/100;

b=number%100/10;

c=number%10;

mid=a+b+c;

max=a>b?a:b;max=max>c?max:c;

min=a>b?b:a;min=min>c?c:min;

mid=mid-min-max;

x=max*100+mid*10+min;

y=min*100+mid*10+max;

/*---------*/

number=x-y;

printf("%d:%d-%d=%d ",i,x,y,number);

i++;

}

return0;

}