C ++中的亚当数

在本节中,我们将看到如何编写程序来检查给定数字是否为亚当数字。在深入研究代码之前,让我们看看亚当数是多少?

亚当数是一个数字,即n,那么如果n的平方和n的平方相反,则该数字就是亚当数。例如,让我们考虑一个数字13。反数为31。然后13的平方为169,而31的平方为961。169和961彼此相反,因此数字13为亚当数。

检查给定数字是否为不是的亚当数的步骤-

  • 取数字n

  • 倒数并存入m

  • 获取n的平方并存储到sq_n中

  • 取得m的平方并将其存储到sq_m

  • 检查sq_n和sq_m的反向是否相同。

示例

#include<iostream>
using namespace std;
int reverseNumber(int num) {
   int res = 0;
   while(num != 0) {
      res = res * 10 + num % 10; //cut last digit and add into the result
      num /= 10; //reduce the number
   }
   return res;
}
bool checkAdamNumber(int num) {
   int rev_num = reverseNumber(num);
   //得到数字的平方和反数字
   int sq_num = num * num;
   int sq_rev_num = rev_num * rev_num;
   //如果sq_num和sq_rev_num彼此相反,则它们是亚当编号。
   if(sq_num == reverseNumber(sq_rev_num)) {
      return true;
   }
   return false;
}
main() {
   int num;
   cout << "输入一个数字以检查它是否是亚当编号:";
   cin << num;
   if(checkAdamNumber(num)) {
      cout << "The number is an Adam number";
   } else {
      cout << "The number is not an Adam number";
   }
}

输出结果

输入一个数字以检查它是否是亚当编号:13
The number is an Adam number

输出结果

输入一个数字以检查它是否是亚当编号:25
The number is not an Adam number