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
结论
如果你对本教程有任何疑问,可以在评论区中提出。
广告