酷代码 AI
菜单
服务商

C++ 平方和质数判断 - 两位数筛选输出实现

好的,我们来一起解决这个问题。这是一个典型的**数字拆分与质数判断**的编程题,非常适合初学者练习基础语法和逻辑。 ## 🧠 问题分析 题目要求: - 找出所有**两位数** - 满足条件:**个位数字的平方 + 十位数字的平方 = 质数** - 按从小到大顺序输出 **关键概念:** - **两位数**:范围 10 ~ 99 - **质数(素数)**:大于1的自然数,且只能被1和自身整除 - **数字拆分**: - 十位数字:`num / 10` - 个位数字:`num % 10` --- ## 📘 解决方案与代码 我们将**分两步**实现: 1. **判断一个数是否为质数**的函数 2. **遍历所有两位数**,计算平方和并检查是否为质数 ### 📦 完整 C++ 代码 ```cpp #include <iostream> using namespace std; // 判断一个整数是否为质数 bool isPrime(int n) { if (n < 2) return false; // 小于2不是质数 if (n == 2) return true; // 2 是质数 if (n % 2 == 0) return false; // 偶数(除了2)不是质数 for (int i = 3; i * i <= n; i += 2) { // 只检查奇数因子,优化效率 if (n % i == 0) return false; } return true; } int main() { // 遍历所有两位数 for (int num = 10; num <= 99; ++num) { int tens = num / 10; // 十位数字 int ones = num % 10; // 个位数字 int sum = tens * tens + ones * ones; // 平方和 if (isPrime(sum)) { cout << num << endl; // 输出满足条件的数 } } return 0; } ``` ### 📌 代码详解 | 部分 | 功能 | 说明 | |------|------|------| | `isPrime(n)` | 判断质数 | 使用试除法,从3到√n检查,步长为2(跳过偶数) | | `tens = num / 10` | 提取十位 | 整数除法,例如 23/10=2 | | `ones = num % 10` | 提取个位 | 取模运算,例如 23%10=3 | | `sum = tens*tens + ones*ones` | 计算平方和 | 注意不要写成 `tens^2`,C++中 `^` 是异或运算 | | `cout << num << endl` | 输出 | 每行一个数,自动换行 | ### 🔍 为什么这样判断质数? - **优化1**:`if (n < 2)` 直接排除0和1 - **优化2**:`if (n % 2 == 0)` 排除所有偶数(2除外) - **优化3**:循环只检查奇数,且上限为 `i * i <= n`,避免检查到n(减少计算量) --- ## 📊 输出示例(部分) ``` 11 12 14 ... 98 ``` **思考**:你可以手动验证一个数,比如 `34`: - 十位=3,个位=4 - 平方和 = 9 + 16 = 25 - 25 不是质数,因此 `34` 不输出。 --- ## 💡 进阶建议 1. **扩展范围**:如果需要处理更大范围的数(如100-999),可以同样方法,提取百位、十位、个位。 2. **性能优化**:可以提前计算出所有质数(筛法)然后查表,但此题范围很小,直接判断即可。 3. **代码风格**:保持函数单一职责(`isPrime` 只做判断),`main` 只做逻辑控制。 4. **错误处理**:若题目要求输入,则需验证输入是否为两位数等。 --- ## 📚 相关学习资源 - 质数判断:维基百科 - 素数 - C++ 语法:菜鸟教程 - C++ 循环、函数 - 练习网站:LeetCode, Codewars 上搜索“Prime Number” --- ## 🔧 常见问题(FAQ) **Q: 为什么 `num % 10` 能取个位?** A: 任何整数除以10的余数就是它的个位数。例如 `34 % 10 = 4`。 **Q: 为什么不用 `sqrt` 函数做循环上限?** A: 使用 `i * i <= n` 避免了浮点数运算和精度问题,更高效、安全。 **Q: 输出顺序为什么是从小到大?** A: 因为 `for` 循环是从10到99顺序遍历,所以自然满足顺序要求。 --- ######[AI写代码神器 | 1129点数解答 | 2026-06-05 21:32:36]

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