`
Jameslyy
  • 浏览: 409168 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

几道简单的数学题目

阅读更多

        在一本杂志上看到一个面试的数学题目,很简单,用程序实现获得两个整数的最大公约数的算法。离开数学太久了,猛一看下去,没有一点概念,首先得弄清楚什么是公约数,回想一下,嗯,原来这就是公约数。就想怎样才能求得最大公约数,比较笨的方法就是先得出两个整数的所有公约数,然后找到那个最大的。这是个笨方法,但也能实现预期的结果。杂志中给出了一个非常简洁的方法,欧几里德算法,简单得还是有一点不太明白:

java 代码
  1. int  gcd( int  m,  int  n) {   
  2.      if (n== 0 return  m;   
  3.      return  gcd(n, m%n);   
  4. }   

        是如此的简单,根据欧几里德算法,通过递归实现了目的,首先用小的数对大的数取余,如果余数是零,那么两个数相同,或者这个较小的数就是它们的最大公约数,如果余数不为零,则继续用这次计算得出的余数对两个整数中比较小的数取余,如果余数为零,则这个比较小的数为最大公约数,如果余数不为零,则继续用本次的余数对上次获得的余数取余,如果余数为零,则上次计算得出的余数则为最大公约数,如果不为零则继续递归,直到得出最大公约数。

       考官的意图就是考察面试者的思考能力,所以也就选择了那个用这种方法实现算法的应试者。结果考官也的确实现了他的目的。不过有多少人能够想到这个方法呢!

       还有一道题目是我经历过的,计算所有小于100000的素数。这也是一个技巧的问题。首先弄明白了什么是素数,素数是只能被1和它本身相除的整数。实现的思路是,从2开始,假如一个数能够被小于他的一个素数整除,则该数不是素数,否则是素数。根据这个思路只要通过一个嵌套循环,对小于100000的数进行一个循环验证,看看它能不能被小于它的所以的素数整除。

java 代码
  1. List zNums( int  m) {           
  2.     List zNums =  new  ArrayList();  // 这里zNums 范型为Integer,但是由于编辑器的原因无法加入          
  3.     zNums.add( 2 );           
  4.      boolean  b =  true ;           
  5.      for  (  int  i= 3;  i < m; i++ )
  6.         b =  true ;           
  7.          for  (Integer n:zNums) {           
  8.              if  ( i%n ==  0 )  {           
  9.                 b =  false ;           
  10.                  break ;           
  11.              }           
  12.          }           
  13.           if  (b) zNums.add(i);           
  14.      }           
  15.      return zNums;
  16. }  

       或许还有更巧妙的方法。

       通过几道很小的数学题目倒引出了我对于数学的兴趣。

       看过王小波的小说和散文,王小波曾经一段时间就一们心思地学习数学,在其小说中的也有这样的角色,在无聊的时候会取出一本数学书去做练习,把数学当作一件有趣的事情去做,把数学和思考的乐趣,人的智慧联系在一起。

      在坛子里也曾看到过喜欢研究数学的偶像派人物。被他们那种研究学问的痴心,对于思考的乐趣的追求所吸引,感觉数学也是一门很有趣的科学!

 

分享到:
评论
8 楼 Jameslyy 2007-09-07  
循环的方法也可以:
int gcd(a, b) {
    int r;
    while b != 0 {
        r = a%b;
        a = b;
        b = r;
    }
    return a;
}
7 楼 dwangel 2007-09-07  
递归……
楼主对递归理解有误,对数学也真的忘得太久了。
如果不要保存中间状态,没必要用递归。
辗转相除法,是应该中小学有的,中间过程的值不用保留。
6 楼 bluemeteor 2007-09-06  
关于求素数那个有俩个改动呵呵
1.
for ( int i=3;  i < m; i++ )

i++ => i+=2
2.
if (b) zNums.add(i); 
=>
if (b) {
if(i<=sqrt(m)){
        zNums.add(i); 
}
rNums.add(i);

其中rNums为最终返回结果,zNums为每次除数因子的List
5 楼 gof95 2007-09-06  
辗转相除法 小学还是初中课本里就学了吧 看来许多人都忘了
4 楼 Jameslyy 2007-09-06  
抛出异常的爱 写道
引用
  考官的意图就是考察面试者的思考能力,所以也就选择了那个用这种方法实现算法的应试者。结果考官也的确实现了他的目的。不过有多少人能够想到这个方法呢!

欧几里德算法,如果不是能想到的人不多,怎么会被冠以他的名子呢?
主要还是要考数学有没有好好上课吧。


关键的是还有多少人记得欧几里德,记得欧几里德,就记得这种方法。如果不记得欧几里德,也知道这种方法的话,那他就是欧几里德第二了,这种人才实在难得。这种考试的方法有考数学的嫌疑,但是其初衷应该是考察面试者的思考能力。
3 楼 Jameslyy 2007-09-06  
realzhang 写道
for (Integer n:zNums)
     if (b) list.add(i);           
不太懂java,上面两句是什么意思呢?没看见有定义list呀怎么出来了list.add?


抱歉,代码是随手写的,没有输入到编辑器中,已经修改过来!
2 楼 抛出异常的爱 2007-09-06  
引用
  考官的意图就是考察面试者的思考能力,所以也就选择了那个用这种方法实现算法的应试者。结果考官也的确实现了他的目的。不过有多少人能够想到这个方法呢!

欧几里德算法,如果不是能想到的人不多,怎么会被冠以他的名子呢?
主要还是要考数学有没有好好上课吧。
1 楼 realzhang 2007-09-06  
for (Integer n:zNums)
     if (b) list.add(i);           
不太懂java,上面两句是什么意思呢?没看见有定义list呀怎么出来了list.add?

相关推荐

    一年级数学应用题100道.pdf

    尽管【部分内容】提供的信息不完整且部分内容无法理解,但可以确定的是,一份包含100道应用题的材料,将覆盖上述提到的各种知识点,并通过不同的情境题目,帮助学生逐步建立起解决实际数学问题的能力。这种题目类型...

    人教版小学一年级数学上册应用题200道含答案.pdf

    6. 数学语言的运用:能够读懂简单的数学应用题目,并用数学语言表述问题和解题过程。 7. 数学问题解决:通过实际问题的解决,提升数学逻辑思维和解决实际问题的能力。 由于具体内容的混乱,我们无法详细提供200道...

    三年级下册数学应用题100道.zip

    通过这套《三年级下册数学应用题100道》的练习,学生不仅可以深化对各个数学概念的理解,还能提高逻辑思维能力和问题解决技巧,为后续的数学学习打下坚实的基础。家长和教师可以利用这些题目进行针对性的辅导和测试...

    一年级数学上册解决问题培优解答应用题练习题50专项专题训练带答案解析.pdf

    7. 解决问题能力的培养:文档题目通过设置不同的情景,如购物、旅行等,使学生学会在实际情境中运用数学知识解决问题。 这些知识点都是数学基础知识,是学生在小学一年级阶段需要掌握的内容。文档通过大量的练习题...

    马克思手稿中的趣味数学题

    有趣的是,这道数学题目还揭示了数学与历史之间的紧密联系。在我们的认知中,马克思与数学看似风马牛不相及,然而实际上,数学作为一门普适的语言,贯穿在各个学科和领域之中。马克思手稿中的数学题目,不仅为数学...

    一年级数学上册解决问题解答应用题练习题50专项训练带答案解析(1).pdf

    2. 题目可能包括计数、简单的加减法、时间和货币的认识等:这是对一年级数学上册可能涉及的基本知识点的一个概述,说明了专项训练内容可能围绕这些领域。 【部分内容】知识点: 由于提供的部分内容是一段乱码文字...

    5000道小学数学应用题

    通过这些题目,学生不仅可以巩固课堂上学到的数学知识,还能锻炼他们在实际情境中应用数学的能力,培养解决问题的策略和思维方式。家长和教师可以按照孩子的学习进度,选择合适难度的题目进行练习,从而提升他们的...

    一年级数学解决问题解答应用题练习题40经典题型带答案解析.pdf

    由于提供的【部分内容】中包含大量数字、符号、字母组合以及可能的OCR识别错误,这导致内容难以理解且无法形成具体的数学题目和解答。但是根据标题:“一年级数学解决问题解答应用题练习题40经典题型带答案解析.pdf...

    二年级(下册)数学口算题1200道.doc

    比如,“84-4×9”这一题目,不仅是一个数学运算题,也可以被看作是一个简单的折扣计算问题。通过这种与实际生活相结合的题目,孩子们可以在练习中学会将数学知识应用于生活中,理解数学在生活中的实际意义,进而...

    小学数学测试系统(c语言)

    本项目是一个基于C语言的小学数学测试系统,旨在通过随机生成数学题目,帮助小学生进行数学练习。系统的核心功能包括加减乘除四种基本运算,采用随机数生成算法来创建题目,从而提供多样化的练习内容。 代码中,...

    一年级数学上册看图列式、解决问题专项练习题.doc

    7. 图形问题涉及到简单的数量推理,如“一共有17只小兔子,左边9只,右边几只?”需要孩子进行简单的减法运算(17 - 9)来得出答案。 8. 黑兔和白兔的数量问题同样要求减法运算,找出白兔的数量。 9. 提出问题的...

    小学五年级数学90道应用题精选.pdf

    这份文件是一本名为《小学五年级数学90道应用题精选》的PDF电子书,其中包含各种类型的数学应用题,涵盖行程问题、面积问题和综合问题三大类,适合小学五年级学生的知识水平和解题能力。 首先来看行程问题,这些...

    几道ICPC题目及其代码(C++)

    这个压缩包可能包含了几道ICPC题目对应的C++代码实现。每道题目的代码可能以题目名称或者编号命名,例如"101.cpp"可能表示的是第101题的解决方案。通过查看和学习这些代码,可以了解到不同问题的解决思路和C++的实践...

    一年级数学上册解决问题培优解答应用题题专项训练经典题型带答案解析.pdf

    从提供的文件内容中,我们可以提炼出一些关于一年级数学上册解决问题培优解答应用题的知识点。这些内容包含了应用题的经典题型以及对应的解析,涵盖了基础的数学问题解决技巧。由于内容片段较为分散和混乱,将尽量...

    初一数学计算题300道

    这份资料包含了300道精心挑选的计算题目,覆盖了初一数学的基本概念和重要公式,是学生自我检测、教师布置作业或培训机构编制练习题的理想选择。 在初一阶段,数学计算题主要涉及以下几个知识点: 1. **整数运算**...

    人教版小学一年级数学下册-认识人民币-解决问题专项训练(40道含答案).doc

    这篇文档是针对人教版小学一年级数学下册中“认识人民币”这一主题的专项训练,包含40道涉及人民币计算的题目,旨在帮助学生理解和掌握人民币的使用,培养他们的实际运算能力。以下是对部分题目的解析: 1. 第1题:...

    小学一年级数学应用题200道.pdf

    《小学一年级数学应用题200道.pdf》不仅仅是一份题集,它更像是通往数学世界的一座桥梁,将枯燥的数字转化为生动的生活片段,让孩子们在游戏中学习,在学习中成长。 数学是抽象的,但应用题将这种抽象变成了具体的...

    100道二年级数学奥数题含答案.doc

    这类题目不仅需要学生具有较强的计算能力,还要有将复杂问题分解为简单部分的思维技巧。 类似数独的问题要求学生根据已知信息,在特定规则下填充数字。这类题目锻炼学生的观察能力和推理能力。 报数和偶数筛选问题...

    三年级数学口算题300道(经典).docx

    在此背景下,一份名为《三年级数学口算题300道(经典)》的文档应运而生,旨在通过大量的口算、笔算以及计算实践,让学生掌握基本的数学运算,并为他们解决实际问题提供工具。 口算作为数学学习的基础技能之一,对...

    幼小衔接数学题一千道打印版-幼小衔接数学应用题100.doc

    - 应用题训练孩子的实际问题解决能力,例如题目中的鸭子和小鸡的问题,需要孩子将数学知识应用于实际情境中。 9. **图形与数量关系**: - 数一数涂一涂的活动,既锻炼孩子的观察能力,也强化了数与物的对应。 10...

Global site tag (gtag.js) - Google Analytics