酷代码 AI
菜单
服务商
DeepSeek字节豆包
更多选项

C++实现无限循环查找AABB平方数详解

我来帮你用C++实现一个无限循环检测AABB形式的平方数。AABB数是指形如 `aabb` 的四位数(如 1122, 3344 等),其中前两位相同、后两位相同。 ## 🔍 问题分析 我们要寻找满足以下条件的四位数: - 形式:`aabb`(a、b都是数字,a≠0) - 该数是某个整数的平方 ## 💻 实现方案 ### 方案一:暴力枚举(推荐) 从最小的AABB数开始,无限循环递增,检测是否为平方数: ```cpp #include <iostream> #include <cmath> int main() { // 从最小的AABB数1122开始 for (int num = 1122;; num++) { // 检查是否为AABB形式 int a = num / 1000; // 千位 int b = num / 100 % 10; // 百位 int c = num / 10 % 10; // 十位 int d = num % 10; // 个位 if (a == b && c == d) { // 检查是否为平方数 int root = static_cast<int>(std::sqrt(num)); if (root * root == num) { std::cout << "找到AABB平方数: " << num << " = " << root << "²" << std::endl; break; // 找到第一个即可,如需继续就注释掉break } } } return 0; } ``` ### 方案二:优化版(先生成AABB数再判断) ```cpp #include <iostream> #include <cmath> int main() { // 无限循环生成AABB数 for (int a = 1;; a++) { // a从1开始,保证四位数 for (int b = 0; b <= 9; b++) { int num = a * 1100 + b * 11; // aabb = a*1000 + a*100 + b*10 + b // 检查平方数 if (num > 9999) break; int root = static_cast<int>(std::sqrt(num)); if (root * root == num) { std::cout << "找到AABB平方数: " << num << " = " << root << "²" << std::endl; // 可以继续搜索或break } } } return 0; } ``` ### 方案三:数学优化(从平方数角度) ```cpp #include <iostream> #include <cmath> int main() { // 从32²=1024开始,直到找到AABB格式 for (int i = 32;; i++) { int num = i * i; if (num > 9999) break; // 超过四位数则停止 int a = num / 1000; int b = num / 100 % 10; int c = num / 10 % 10; int d = num % 10; if (a == b && c == d) { std::cout << "找到AABB平方数: " << num << " = " << i << "²" << std::endl; break; } } return 0; } ``` ## 📊 运行结果 上述代码运行后会找到:**7744 = 88²**(这是唯一的四位数AABB平方数) ## ⚠️ 注意事项 1. **无限循环风险**:方案一和方案二如果去掉`break`且不加数字范围限制,会无限循环。建议添加范围判断。 2. **精度问题**:使用`std::sqrt`时要注意浮点精度,用`static_cast<int>`后检查平方。 3. **四位数验证**:确保`num`在1000-9999范围内。 ## 🚀 扩展建议 - 将查找范围扩展为六位数(AABBCC形式) - 使用多线程并行搜索提高效率 - 添加命令行参数控制查找范围和输出格式 ## 📚 学习资源 - [C++整数运算官方文档](https://en.cppreference.com/w/cpp/language/operator_arithmetic) - [平方数特性](https://zh.wikipedia.org/wiki/%E5%B9%B3%E6%96%B9%E6%95%B0) ######[AI写代码神器 | 992点数解答 | 2026-08-26 18:18:21]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]