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

本文揭示了一个数学奇观,无论你输入任意四位数,通过特定的运算步骤,最终都能得到数字6174。并提供了一个C++程序验证此现象,深入探索数学奥秘。

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

    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;
}

    

明白了,你需要一个 C++ 程序来生成神奇 N 位数。下面是一个简单的实现: ```cpp #include <iostream> void generateMagicNumbers(int n) { // 用一个数组来存储每一位的数字 int magicNumber[n]; // 初始化数组,将每一位数字都设为 1 for (int i = 0; i < n; i++) { magicNumber[i] = 1; } // 生成并输出神奇 N 位数 while (true) { // 输出神奇 N 位数 for (int i = 0; i < n; i++) { std::cout << magicNumber[i]; } std::cout << std::endl; // 在数组中进行进位操作 int carry = 1; for (int i = n - 1; i >= 0; i--) { magicNumber[i] += carry; // 如果当前位的数字于 3,则进位 if (magicNumber[i] > 3) { magicNumber[i] = 1; carry = 1; } else { carry = 0; break; } } // 如果进位操作完成后,所有位都变回了 1,则退出循环 if (carry == 1) { break; } } } int main() { int n; std::cout << "请输入要生成的神奇 N 位数的位数:"; std::cin >> n; std::cout << "生成的神奇 " << n << " 位数如下:" << std::endl; generateMagicNumbers(n); return 0; } ``` 这段代码通过一个数组来存储每一位的数字,并且初始化为 1。然后使用一个循环来生成并输出神奇 N 位数。在循环中,先输出当前的神奇数,然后对数组进行进位操作,直到所有位都变回 1,退出循环。 注意:这段代码只适用于 N 比较小的情况,因为它将所有神奇 N 位数都生成并输出了。如果 N 很,可能会导致输出量非常。如果只需要生成前几个神奇 N 位数,可以在循环中加入一个计数器来控制生成的数量。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值