编写一个程序exp1-1.cpp,对给定的正整数n,求1+2+3+…+n,采用逐个累加和n(n+1)(高斯法)两种解法。对于相同的n,给出这两种解法的求和结果和求解时间。用c++语言编程
时间: 2024-11-25 19:10:58 浏览: 20
编写一个简单的C++程序来实现这个需求,我们可以创建两个函数,一个是传统的for循环逐个累加求和(高斯法),另一个则是使用乘法公式直接计算。首先,让我们编写程序:
```cpp
#include <iostream>
#include <chrono> // 需要头文件来获取当前时间
// 使用for循环的传统累加求和
int sumByLoop(int n) {
int result = 0;
for (int i = 1; i <= n; ++i) {
result += i;
}
return result;
}
// 使用公式快速求和
int sumByFormula(int n) {
return (n * (n + 1)) / 2;
}
int main() {
int n;
std::cout << "请输入一个正整数n: ";
std::cin >> n;
// 记录开始时间
auto start = std::chrono::high_resolution_clock::now();
// 累加求和
int loopResult = sumByLoop(n);
std::cout << "逐个累加和: " << loopResult << "\n";
// 公式求和
int formulaResult = sumByFormula(n);
std::cout << "乘法公式求和: " << formulaResult << "\n";
// 输出求解时间
auto end = std::chrono::high_resolution_clock::now();
auto duration = std::chrono::duration_cast<std::chrono::microseconds>(end - start);
std::cout << "累加求和耗时: " << duration.count() << "us\n";
// 判断求解时间,假设公式求和更快
if (duration.count() > 5000) {
std::cout << "注意:对于大数,乘法公式求和通常比逐个累加快。\n";
} else {
std::cout << "对于小数,两者速度差异不大。\n";
}
return 0;
}
```
阅读全文