看一道小学数学题:

有一个自然数,它被2除余1,被3除余2,被4除余3,被5除余4,被6除余5,被7除余6,被8除余7,被9除余8,请求出这个数。这个问题如果单从数学的角度来看,应该是可以解出的,但是貌似不是那么显而易见( 如果有用纯数学方法解出来的童鞋欢迎留言! )。作为一个程序员,我们使用程序员方法来尝试解决。

废话不说,直接上代码:

def gettheNums(N):
    for x in range(1,N):
        if x%2==1 and x%3==2 and x%4==3 and x%5==4 \
        and x%6==5 and x%7 == 6 and x%8 == 7 and x%9 == 8:
            print(x)
            
if __name__ == "__main__":
    gettheNums(10000)  # 先求出10000以内满足条件的自然数

# 返回信息

2519
5039
7559

这个程序很简单直观,很容易理解,其实是利用了计算机在短时间内强大的运算能力来暴力寻解。

当然,有没有办法适当的优化一下呢?

1)其实,显而易见的是这个数一定是奇数,因为该数被除余1,所以不可能为偶数;

这样,我们事实上可以优化掉一半的数字考虑(只考虑奇数);

2)被3除余2可不可以优化呢:

稍加分析,我们可以看出,由于这个数被9除余8,则 x = 9n+8 =可以推出=》  x = 3*3n+3*2+2 = 3*(3n+2) + 2 (小学数学知识吧 :))

从而我们看出这个数被9除余8 ==》 被3除余2;

这样我们可以在优化一半数的情况下再优化掉剩下的1/3考虑;

这样程序可以写成:

def gettheNums2(N):
    for x in range(1,N,2):   # 从1开始,step每次+2,保证是奇数
        if x%4==3 and x%5==4 and x%6==5 \    # 优化掉x%3==2
        and x%7 == 6 and x%8 == 7 and x%9 == 8:
            print(x)
            
if __name__ == "__main__":
    gettheNums2(100000)   #  这样可以得到10万以内满足条件的自然数

# 输出结果

2519
5039
7559
10079
12599
15119
17639
20159
22679
25199
27719
30239
32759
35279
37799
40319
42839
45359
47879
50399
52919
55439
57959
60479
62999
65519
68039
70559
73079
75599
78119
80639
83159
85679
88199
90719
93239
95759
98279

当然,还有没有进一步优化的方案,大家可以思考一下!

通过这个程序,我们看到怎么利用计算机程序来完成人脑不太擅长的繁琐暴力运算,也看到了简单的数学方法在

计算机编程中的优化作用。以此例子抛砖引玉,仅供大家参考!

一道小学数学问题的编程解法相关推荐

  1. 一道小学数学竞赛题:到底有几个三角形?

    近日,在日本的Twitter上又发生了一起群撕事件,而诱因竟是一张图片,准确地说,应该是一道小学数学竞赛题.正如下图你所见,这是一道数数题,问这张图里你能看到出几个三角形?据说只有IQ120以上的天才 ...

  2. 一道小学奥数题的编程解法

    一道小学奥数题的编程解法 这是一道小学奥数题,看到这一题后如果只给我笔和纸,我真的无从下手,不知怎么去把这些方框填出来.但借助编程,这道题就非常简单了.直接送上代码. C++程序代码 #include ...

  3. 计算机辅助小学数学教学的研究,计算机辅助数学教学的研究

    计算机辅助数学教学的研究 在社会迅速发展的今天,计算机这一高科技产物广泛的应用于各行各业中,取得了巨大的经济效益和社会效益,作为社会重要组成部分之一的教育当然也不例外,随着计算机的日趋普及和计算机技术 ...

  4. 有意思的小学数学竞赛题-2

    刚刚在matrix67上看到一篇很有意思的帖子,原文http://www.matrix67.com/blog/archives/4485 我老早就写过一个经典的小学几何题.如果你还没看过这个问题,你一 ...

  5. 计算机辅助小学数学教学的研究,计算机辅助小学数学教学研究.doc

    计算机辅助小学数学教学研究 计算机辅助小学数学教学研究 [摘要]下面是xx小编收集的计算机辅助小学数学教学研究,欢迎阅读! 课堂教学是学校教学工作的主体,是学校教育最基本的形式.长期以来, 我国学校教 ...

  6. 用java做小学数学系统_自动生成中小学数学题目的控制台小程序

    正版现货scratch+小学数学编程教材 106.5元 包邮 (需用券) 去购买 > 前段时间写了一个自动生成中小学数学题目的控制台小程序 下面简要介绍一下我这次的一个开发过程 需求: 1.命令 ...

  7. P2433 【深基1-2】小学数学 N 合一(题解)​

    这是一道水题+坑题 顺序结构的题单里竟然有选择结构! 题目描述 问题 1 请输出 I love Luogu! 问题 2 这里有 10 个苹果,小A 拿走了 2 个,Uim 拿走了 4 个,八尾勇拿走剩 ...

  8. python竞赛试题及答案_用Python来解一道华罗庚数学竞赛试题

    最近浏览到一道华罗庚数学竞赛试题,觉得很有意思,题目是这样的: x,y都是正整数,且满足x+y+xy=54,求x+y的值. 这道题可以用数学的常规解法,即分解因式来做,其实我们也可以用python来编 ...

  9. [Luogu]P2433 小学数学N合一(C++题解)

    文章目录 Part 0 [深基1-2]小学数学 N 合一 题目描述 问题 1 问题 2 问题 3 问题 4 问题 5 问题 6 问题 7 问题 8 问题 9 问题 10 问题 11 问题 12 问题 ...

最新文章

  1. Python 库突发 PyPI 危机!
  2. 【TPAMI2020】目标检测中的不平衡问题:综述论文,34页pdf
  3. BZOJ3769:BST again(记忆化搜索DP)
  4. spring整合springmvc和mybatis
  5. springboot创建parent_Springboot 框架整理,建议做开发的都看看,整理的比较详细!...
  6. 90后80后70后60后和50后的无奈
  7. [C++基金会]位计算 游戏开发中的应用
  8. 小 X 的 AK 计划
  9. 数据结构 - 链表(单向环形链表)(约瑟夫问题)
  10. 史上最全java架构师技能图谱(上)
  11. python高级属性 用法 编程_python高级编程之面向对象高级编程
  12. influxdb删除某一列(tag或者field)
  13. 【学习笔记】卡尔曼滤波中的协方差矩阵
  14. Lync server 2013新建持久聊天室提示用户未启用SIP
  15. 闲聊一下android 3D 网络游戏
  16. 算法设计与分析之分治法
  17. 用c++解一元二次方程
  18. java代码实现排序二叉树
  19. 中国式危机公关9加1策略(第七章 道歉先行策略)
  20. 渗压计工作原理及选型

热门文章

  1. 计算机原理74181芯片,利用SN74181芯片构成16位ALU及原理.ppt
  2. 统计字符串中字幕出现的数量(Map案例)
  3. 博雅数智|3.23直播笔记
  4. 等效结点荷载计算机语言,等效节点荷载,equivalent node load,音标,读音,翻译,英文例句,英语词典...
  5. 计算机必须安装flash吗,如果计算机提示,如何安装Flash Player?
  6. 真无线蓝牙耳机哪款音质最好?真无线蓝牙耳机音质排行榜
  7. java语言开发的万能简历解析,任何简历都可以 规范格式化数据保存入库! - CSDN博客
  8. 【ESP32】arduino中的ESP32实时系统FreeRTOS使用教程(一)
  9. iOS应用性能调优的25个建议和技巧
  10. 滚轮JAVA_java滚轮