C++ 卡普雷卡数


在本教程中,我们将编写一个程序,找出给定的数字是否是卡普雷卡数

取一个数字。求出该数字的平方。将数字分成两部分。如果两部分的和等于原始数字,则该数字称为卡普雷卡数

我们来看看解决此问题的步骤。

  • 初始化 n。
  • 求出 n 的平方。
  • 找到 n 的平方中的数字位数,并将其存储在变量中。
  • 将 n 的平方除以 10、100、1000 等,直到数字计数。
    • 检查这些部分中的任何一部分的和是否等于 n。
  • 如果它们相等,则返回;否则,返回

示例

我们来看看代码。

 实时演示

#include<bits/stdc++.h>
using namespace std;
bool isKaprekarNumber(int n) {
   if (n == 1) {
      return true;
   }
   int nSquare = n * n, digitsCount = 0;
   while (nSquare) {
      digitsCount++;
      nSquare /= 10;
   }
   nSquare = n * n;
   for (int i = 1; i < digitsCount; i++) {
      int parts = pow(10, i);
      if (parts == n) {
         continue;
      }
      int sum = nSquare / parts + nSquare % parts;
      if (sum == n) {
         return true;
      }
   }
   return false;
}
int main() {
   int n = 25;
   string result = isKaprekarNumber(n) ? "True" : "False";
   cout << result << endl;
   return 0;
}

输出

如果你运行上面的代码,你将得到以下结果。

False

结论

如果你对本教程有任何疑问,可以在评论区中提出。

更新于:09-Apr-2021

2 千次以上浏览

开创你的职业生涯

通过完成课程获得认证

开始
广告