C++求解1~n内勾股数组合:避免溢出、精度与边界陷阱
#include <iostream> #include <cmath> using namespace std; int countPythagoreanPairs(int n) { int count = 0; for (int c = 2; c <= n; c++) { int b = c - 1; int a_squared = c * c - b * b; int a = sqrt(a_squared); if (a * a == a_squared && a > 0 && a < b) { count++; } } return count; } int main() { int n; cout << "Enter n: "; cin >> n; cout << "Number of pairs: " << countPythagoreanPairs(n) << endl; return 0; } 我在以往的开发过程中,碰到过以下几点需要格外小心处理的地方: 1. 整数范围溢出问题,确保计算过程中数值不会超出整数表示范围。 2. 浮点数精度问题,使用整数运算避免sqrt可能带来的精度误差。 3. 边界条件检查,确保循环和条件判断覆盖所有有效情况。 ######[AI写代码神器 | 224点数解答 | 2025-09-15 20:19:12]
相关提问