int main() { // 我要计算出1+2+3+...+100的值 int i = 0, n = 100, sum = 0; for (i; i <= n; i++) { sum += i; } printf("%d ", sum); // 这对于电脑很轻松,只要重复一百次循环就可以了。但是人不行,累啊。 // 所以要有一个合理的算法。 // 数学家高斯(九岁时)也遇到了这个问题,他很快算出答案是5050 // 首尾对应位置上的数字相加都是101,这样的首尾数字对一共有50个,相乘就是5050! // 好厉害! sum = ((1 + n) * n) / 2; printf("%d ", sum); // 对于n=100的情况,电脑少操作了99步,推导至更为普遍的情况 // 就是1次与n次的差别! }