一个神奇的四位数-----6174(包括C++实现)

来源:互联网 发布:麻雀网络 编辑:程序博客网 时间:2024/05/01 23:07

     许多人会认为这个数没有什么特别的啊,的确,从表面上看不出什么的,这些数字再普通也不过了。但是有没有发现有这样一个奇特的现象:

    7641-1467=6174

      将它从大到小排列减去从小到大的排列会得到它本身,这也没有什么好稀奇的嘛!但是你如果拿任意一个四位数,你从大到小排列减去从小到大排列,并且不停地执行这个操作,你会惊奇地发现你最终也会得到6174.如:7586

   8675-5678=3087

   8730-378=8352

   8532-2358=6174

对的,任何一个四位数都有这样的规律,可以试试!!!

     下面我再给出它用C++程序的验证方法,你可以代任何的四位数用COMPUTER去验证它。

 

    #include <iostream>  
using namespace std;
void InsertSort(int  a[],int n)
{
 int i,j;
 int  temp;
 for( i=0;i<n-1;i++)
 {
  temp=a[i+1];
  j=i;
  while(j>-1&&temp<=a[j])
  {
   a[j+1]=a[j];
   j--;
  }
  a[j+1]=temp;
 }
}
int Change(int a[4],bool b)
{
 if(b==0)
 {
  return a[0]*1000+a[1]*100+a[2]*10+a[3];
 }
 else
  return a[0]+a[1]*10+a[2]*100+a[3]*1000;
}
void GetEnchNum(int a[],int n,int m)
{
 int fac=1,i;
 for(i=1;i<m;i++)
 {
  fac=fac*10;
 }
 a[0]=n/fac;
 n=n-a[0]*fac;
 for(i=1;i<m;i++)
 {
  fac=fac/10;
  a[i]=n/(fac);
  n=n-a[i]*fac;
 }
}
int main()
{
 int n;
 cout<<"Enter a four-digit:";
 cin>>n;
 while(n>=10000||n<999)
 {
  cout<<"Please enter it again:";
  cin>>n;
 }
 while(n!=6174)
 {
  int a[4];
  GetEnchNum(a, n,4);
  InsertSort(a,4);

  n=Change(a,1)-Change(a,0);
  cout<<Change(a,1)<<"-"<<Change(a,0)<<"="<<n<<endl;
 }
 cout<<endl;
}

    

原创粉丝点击