简单的数学思想

l  筛法求素数

把从1开始的、某一范围内的正整数从小到大顺序排列, 1不是素数,首先把它筛掉。剩下的数中选择最小的数是素数,然后去掉它的倍数。依次类推,直到筛子为空时结束。如有:

1 2 3 4 5 6 7 89 10

11 12 13 14 1516 17 18 19 20

21 22 23 24 2526 27 28 29 30

1不是素数,去掉。剩下的数中2最小,是素数,去掉2的倍数,余下的数是:

3 5 7 9 11 13 1517 19 21 23 25 27 29

剩下的数中3最小,是素数,去掉3的倍数,如此下去直到所有的数都被筛完,求出的素数为:

2 3 5 7 11 13 1719 23 29

l  辗转相除法 

是利用以下性质来确定两个正整数 a 和 b 的最大公因子的:

⒈若 r 是 a ÷ b 的余数,且r不为0,则

gcd(a,b) =gcd(b,r)

⒉ a 和其倍数之最大公因子为 a。

另一种写法是:

⒈令r为a/b所得余数(0≤r<b)

若 r= 0,算法结束;b 即为答案。

⒉互换:置 a←b,b←r,并返回第一步。

l  康托展开

把一个整数X展开成如下形式:

X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[2]*1!+a[1]*0!

其中,a为整数,并且0<=a[i]<i(1<=i<=n)

{1,2,3,4,...,n}表示1,2,3,...,n的排列如 {1,2,3} 按从小到大排列一共6个。123 132 213 231312 321 。

代表的数字 1 2 3 4 5 6 也就是把10进制数与一个排列对应起来。

他们间的对应关系可由康托展开来找到。

如我想知道321是{1,2,3}中第几个小的数可以这样考虑:

第一位是3,当第一位的数小于3时,那排列数小于321 如 123、 213,小于3的数有1、2 。所以有2*2!个。再看小于第二位2的:小于2的数只有一个就是1 ,所以有1*1!=1所以小于321的{1,2,3}排列数有2*2!+1*1!=5个。所以321是第6个小的数。 2*2!+1*1!+0*0!就是康托展开。

再举个例子:1324是{1,2,3,4}排列数中第几个大的数:第一位是1小于1的数没有,是0个 0*3! 第二位是3小于3的数有1和2,但1已经在第一位了,所以只有一个数2 1*2! 。第三位是2小于2的数是1,但1在第一位,所以有0个数0*1! ,所以比1324小的排列有0*3!+1*2!+0*1!=2个,1324是第三个小数。

l  逆康托展开

例1 {1,2,3,4,5}的全排列,并且已经从小到大排序完毕

(1)找出第96个数

首先用96-1得到95

用95去除4! 得到3余23

有3个数比它小的数是4

所以第一位是4

用23去除3! 得到3余5

有3个数比它小的数是4但4已经在之前出现过了所以第二位是5(4在之前出现过,所以实际比5小的数是3个)

用5去除2!得到2余1

有2个数比它小的数是3,第三位是3

用1去除1!得到1余0

有1个数比它小的数是2,第二位是2

最后一个数只能是1

所以这个数是45321

(2)找出第16个数

首先用16-1得到15

用15去除4!得到0余15

用15去除3!得到2余3

用3去除2!得到1余1

用1去除1!得到1余0

有0个数比它小的数是1

有2个数比它小的数是3 但由于1已经在之前出现过了所以是4(因为1在之前出现过了所以实际比4小的数是2)

有1个数比它小的数是2 但由于1已经在之前出现过了所以是3(因为1在之前出现过了所以实际比3小的数是1)

有1个数比它小得数是2 但由于1,3,4已经在之前出现过了所以是5(因为1,3,4在之前出现过了所以实际比5小的数是1)

最后一个数只能是2

所以这个数是14352

l  同余定理    

许多的数被一个数d去除,有相同的余数。d数学上的称谓为模。如a=6,b=1,d=5,则我们说a和b是模d同余的。因为他们都有相同的余数1。

数学上的记法为:

a≡ b(mod d)

可以看出当n<d的时候,所有的n都对d同商,比如时钟上的小时数,都小于12,所以小时数都是模12的同商.

对于同余有三种说法都是等价的,分别为:

(1) a和b是模d同余的.

(2) 存在某个整数n,使得a=b+nd .

(3) d整除a-b.

可以通过换算得出上面三个说话都是正确而且是等价的.

时间: 2024-08-03 15:24:23

简单的数学思想的相关文章

《趣题学算法》—第1章1.2节简单的数学计算

1.2 简单的数学计算以上那样利用循环重复将部分数据简单地累加,可以解决很多计数问题.然而,如果计数问题可以通过数学计算直接得出结果,往往可以大大改善算法的时间效率,请看下列问题. 问题1-5 小小度刷礼品图片 7 问题描述 一年一度的百度之星大赛又开始了,这次参赛人数创下了吉尼斯世界纪录.于是,百度之星决定奖励一部分人:所有资格赛提交ID以x结尾的参赛选手将得到精美礼品一份. 小小度同学非常想得到这份礼品,于是他就连续提交了很多次,提交的ID从a连续到b.他想知道能得到多少份礼品,你能帮帮他吗

Basic程序,能进行简单的数学计算

达特茅斯学院早期开发的Basic程序,能进行简单的数学计算,运行在该校分时系统(DTSS)的模拟器上.DTSS的电传打字机使用黄色纸张,打印速度很慢.新浪科技讯 北京时间5月5日下午消息,1964年的5月1日,美国达特茅斯学院的一台电脑运行了世界上第一个BASIC程序,从此改变了世界.BASIC语言由约翰·开米尼(John Kemeny)和托马斯·库尔茨(Thomas Kurtz)两位教授以及一组学生共同创造,其全称为Beginner's All-Purpose Symbolic Instruc

《Python游戏编程快速上手》——第2章 交互式shell 2.1 一些简单的数学知识

第2章 交互式shell 本章主要内容: 整数和浮点数: 表达式: 值: 操作符: 计算表达式: 在变量中存储值. 在开始创建游戏之前,我们需要先介绍一些基本的编程概念.本章不会创建游戏,但是学习这些概念是编写电子游戏程序的第一步.我们先来学习如何使用Python的交互式shell. 2.1 一些简单的数学知识 按照第1章中介绍的步骤打开IDLE,然后使用Python来求解一些简单的数学问题.交互式shell可以像计算器一样工作.在交互式shell的>>>提示符之后,输入2+2,然后按下

函数计算-建立一个简单的数学计算函数场景

Serverless作为一种微服务是一种概念,Serverless允许你提供代码或可执行程序提交给云厂商的解析服务(如阿里云的FunctionComputer等),由解析服务来为你执行它们,而你无需自己管理服务器.配置环境.Web环境等.这就是所谓的执行即服务execution-as-a-service,这样的一种概念听起来非常吸引人,实际上也可以算是一场革命,引用一张经典图轨迹图,让大家看看整个IT运维运行的发展轨迹,如下图: 图解:犹如我们从爬行动物猩猩一样,最初靠两只手和两只脚慢慢的挪动,

PHP中简单实现数学组合算法

公式 有时候也表示成: c(n,m)=p(n,m)/m!=n!/((n-m)!*m!) 2性质 c(n,m)=c(n,n-m); 3递推公式 c(n,m)=c(n-1,m-1)+c(n-1,m) 等式左边表示从n个元素中选取m个元素,而等式右边表示这一个过程的另一种实现方法:任意选择n中的某个备选元素为特殊元素,从n中选m个元素可以由此特殊元素的分成两类情况,即m个被选择元素包含了特殊元素和m个被选择元素不包含该特殊元素.  代码如下 复制代码 <?php //实现数学上的组合数算法 heade

算法题:UVa 11461 Square Numbers (简单数学)

11461 - Square Numbers Time limit: 1.000 seconds http://uva.onlinejudge.org/index.php? option=com_onlinejudge&Itemid=8&category=467&page=show_problem&problem=24 56 A square number is an integer number whose square root is also an integer.

网页设计译文:网页设计中数学的运用

"数学是美妙的."对于在数字和公式面前畏缩的人来说,这听起来也许是荒谬的.但是,从最小的贝壳到最大的漩涡星系,自然界和我们这个宇宙中大部分美丽的东西都呈现出数学特性. 其实,古代最伟大的哲学家之一亚里斯多德曾说过:"数学格外地展现了秩序.对称和极限,而这些是美的极致形式". 由于其美丽的天性, 数学一直以来都是艺术和建筑设计的一部分.但它至今还没有在网站设计中发挥作用.其原因可能是因为我们大多认为数学是创造性的对立面.相反,其实数学可以成为创作创意设计的工具.也就是

浅谈程序员的数学修养

可能有很多朋友在网上看过Google公司早几年的招聘广告,它的第一题如下了:{first 10-digit prime found in consecutive digits e}.com,e中出现的连续的第一个10个数字组成的质数.据说当时这个试题在美国很多地铁的出站口都有大幅广告,只要正确解答了这道题,在浏览器的地址栏中输入这个答案,就可以进入下一轮的测试,整个测试过程如同一个数学迷宫,直到你成为Google的一员.又如Intel某年的一道面试题目:巴拿赫病故于1945年8月31日.他的出生

如何用数学知识提升情商?数学学霸们的6大思维习惯

引言:成为一名"数学学霸"显然不是一件轻松的工作,不仅需要"高智商"的支持,还一不小心就被套上了"情商低""Nerd"的"帽子". 别怕!事实上,除了具体的公式.求证,数学学习中涉及的思维方式在日常生活中也能够派上大用场! 本篇文章用大量实际案例告诉你,数学学习中get到的这6大技能不仅仅可以帮助你思考发杂而多元的问题,也能够帮你培养成功所必须的情商. ◆ ◆ ◆ 为什么要学习数学? 学生在学数学时最常见的