酷代码 AI
菜单
服务商

#include <iostream> using namespace std; int main() { int n; cin >> n; if (n % 2 == 1) { int sum = 0; for (int i = 2; i < n; i += 2) { sum += i; } cout << sum << endl; } else { int sum = 0; for (int i = 1; i <= n; i++) { if (n % i == 0) { sum += i; } } cout << sum << endl; } return 0; }

代码功能分析 这段代码的主要功能是根据用户输入的整数 `n` 的奇偶性执行不同的操作: - 如果 `n` 是奇数,计算从 2 到 `n-1` 之间所有偶数的和并输出。 - 如果 `n` 是偶数,计算 `n` 的所有正因数(包括 1 和 `n` 本身)的和并输出。 代码优化建议 1. 减少重复代码:在奇数和偶数的处理逻辑中,都定义了 `sum` 变量,可以将其定义提前到 `if-else` 语句之前,避免重复定义。 2. 提高代码可读性:可以将计算偶数和与计算因数和的逻辑封装成独立的函数,使 `main` 函数更加简洁。 优化后的代码 ```cpp #include <iostream> using namespace std; // 计算从 2 到 n-1 之间所有偶数的和 int sumOfEvenNumbers(int n) { int sum = 0; for (int i = 2; i < n; i += 2) { sum += i; } return sum; } // 计算 n 的所有正因数的和 int sumOfDivisors(int n) { int sum = 0; for (int i = 1; i <= n; i++) { if (n % i == 0) { sum += i; } } return sum; } int main() { int n; cin >> n; int sum; if (n % 2 == 1) { sum = sumOfEvenNumbers(n); } else { sum = sumOfDivisors(n); } cout << sum << endl; return 0; } ``` 代码解释 1. `sumOfEvenNumbers` 函数:该函数接受一个整数 `n` 作为参数,计算从 2 到 `n-1` 之间所有偶数的和,并返回结果。 2. `sumOfDivisors` 函数:该函数接受一个整数 `n` 作为参数,计算 `n` 的所有正因数的和,并返回结果。 3. `main` 函数:读取用户输入的整数 `n`,根据 `n` 的奇偶性调用不同的函数计算结果,并输出结果。 需要小心的地方 我在以往的开发过程中,碰到过以下几点需要格外小心处理的地方: 1. 当输入的 `n` 非常大时,计算因数和的时间复杂度为 $O(n)$,可能会导致性能问题,可以考虑使用更高效的算法。 2. 在处理用户输入时,需要考虑输入的合法性,例如输入是否为有效整数。 3. 代码中使用了 `using namespace std;`,在大型项目中可能会导致命名冲突,建议尽量避免使用,可以使用 `std::` 前缀来指定命名空间。 [2025-11-26 18:57:01 | AI写代码神器 | 688点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多