经典数学故事 - 高斯的故事

来源:互联网 发布:qt编程快速入门 鲍忠贵 编辑:程序博客网 时间:2024/06/02 09:51

高斯有许多有趣的故事,故事的第一手资料常来自高斯本人,因为他在晚年时总喜欢谈他小时後的事,我们也许会怀疑故事的真实性,但许多人都证实了他所谈的故事。

高斯的父亲作泥瓦厂的工头,每星期六他总是要发薪水给工人。在高斯三岁夏天时,有一次当他正要发薪水的时候,小高斯站了起来说:「爸爸,你弄错了。」然後他说了另外一个数目。原来三岁的小高斯趴在地板上,一直暗地里跟着他爸爸计算该给谁多少工钱。重算的结果证明小高斯是对的,这把站在那里的大人都吓的目瞪口呆。

高斯常常带笑说,他在学讲话之前就已经学会计算了,还常说他问了大人字母如何发音後,就自己学着读起书来。

七岁时高斯进了 St. Catherine小学。大约在十岁时,老师在算数课上出了一道难题:「把 1 100的整数写下来,然後把它们加起来!」每当有考试时他们有如下的习惯:第一个做完的就把石板﹝当时通行,写字用﹞面朝下地放在老师的桌子上,第二个做完的就把石板摆在第一张石板上,就这样一个一个落起来。这个难题当然难不倒学过算数级数的人,但这些孩子才刚开始学算数呢!老师心想他可以休息一下了。但他错了,因为还不到几秒钟,高斯已经把石板放在讲桌上了,同时说道:「答案在这儿!」其他的学生把数字一个个加起来,额头都出了汗水,但高斯却静静坐着,对老师投来的,轻蔑的、怀疑的眼光毫不在意。考完後,老师一张张地检查着石板。大部分都做错了,学生就吃了一顿鞭打。最後,高斯的石板被翻了过来,只见上面只有一个数字:5050(用不着说,这是正确的答案。)老师吃了一惊,高斯就解释他如何找到答案:1100101299101398101……49521015051101,一共有50对和为101的数目,所以答案是 50×1015050。由此可见高斯找到了算术级数的对称性,然後就像求得一般算术级数合的过程一样,把数目一对对地凑在一起。

1100的整数和

实现思路

1.  逐一将1100累加,并保存的和中。

2.  定义一个用于保存和的整型变量(sum),初始时没有任何数进行相加,所以初始值为0

3.  1100循环将每个数累计到sum中。

4.  将结果显示。

实现步骤

// IntegerSum.cs

using System;

public class NumberAdd{
    public static void Main(){
        int sum = 0;
        for(int i = 0; i <= 10; i++)
            sum += i;

        Console.WriteLine("1-10
之间的整数相加和为:" + sum);
    }
}

输出1-1000间的所有的偶数之和

实现思路

1.  逐一将1100累加,并保存的和中。

2.  定义一个用于保存和的整型变量(sum),初始时没有任何数进行相加,所以初始值为0

3.  1100循环将每个能被2整除的数累计到sum中。

4.  将结果显示。

实现步骤

// EventSum.cs

using System;

class EventSum{
    static void Main(){
        int sum = 0;
        for(int i = 1; i <= 1000; i++){
            if(i % 2 == 0){
                sum += i;
            }
        }

        Console.WriteLine("1-1000
间的所有的偶数之和:{0}", sum);
        Console.ReadLine();
    }
}

计算1000以内所有不能被7整除的整数的和

实现思路

1.  逐一将1100累加,并保存的和中。

2.  定义一个用于保存和的整型变量(sum),初始时没有任何数进行相加,所以初始值为0

3.  1100循环将每个除了能被7整除的数累计到sum中。

4.  将结果显示。

实现步骤

// DivideSevenSum.cs

using System;

class DivideSevenSum{
    public static void Main(){
        int sum = 0;
        for(int i = 1; i < 1000; i++){
            if(i % 7 == 0)
                continue;

            sum += i;
        }

        Console.WriteLine("1000
以内所有不能被7整除的整数的和:" + sum);
    }
}