简单的数学思想

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.

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

简单的数学思想,布布扣,bubuko.com

时间: 2024-10-27 19:54:17

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

css3 calc():css简单的数学运算-加减乘除

css3 calc():css简单的数学运算–加减乘除 多好的东西啊,不用js,一个css就解决了. .box{ border:1px solid #ddd; width:calc(100% - 100px); background:#9AC8EB; } 3栏等宽布局 .box{ margin-left:20px; width:calc(100%/3 - 20px); } .box:nth-child(3n){ margin-left:0; } 运算规则 calc()使用通用的数学运算规则,但是

hdu--3835--最简单的数学..

这应该是最简单的数学了吧... 给你一个数N 问有多少种方法可以组成N=A^2+B^2.. 对于样例1 R(2)=4 分别是 <1,-1>   <1,1>   <-1,1>  <-1,-1>其他的情况 题目hint已经告诉我们了 这题 直接上代码吧=-= 1 #include <iostream> 2 #include <cmath> 3 using namespace std; 4 5 int main() 6 { 7 double

前人的代码(数学思想很重要)

/*N^N = 10^(N*log(N))中,由于 N <1000000000,N*log(N)取值在[0,9000000000],没有超出double数据的范围,没有益处.设N*log(N)的整数部分为intpart,分数部分为fractpart,则N^N = 10^(intpart + fractpart) = 10^intpart * 10^fractpart.其中10^intpart肯定为10的倍数,不影响结果,可忽略.所以:10^fractpart的最高位即为结果(因为0<=frac

ASP.NET MVC 简单的分页思想与实现

, 作为一个程序猿,数据分页是每个人都会遇到的问题.解决方案更是琳琅满目,花样百出.但基本的思想都是差不多的. 下面给大家分享一个简单的分页器,让初学者了解一下最简单的分页思想,以及在ASP.NET MVC中的简单实现与应用. 一,定义分页器类 在ASP.net MVC中,分页的数据源可能是各种不同的类型,所以最好使用泛型来定义. public class PagingHelper<T> 二,基本三要素 实现分页人所共知的三个基本属性: DataSource:数据源,要知道数据源共计多少条数据

简单实用数学

等比数列的通项公式:an=a1qn?1 求和公式: Sn=a1(1?qn)1?q(q≠1) 等差数列的通项公式: an=a1+(n?1)d 求和公式:Sn=na1+n(n?1)2d 简单实用数学,布布扣,bubuko.com

一个简单的数学小魔术

在一张纸上并排画 11 个小方格.叫你的好朋友背对着你(确保你看不到他在纸上写什么),在前两个方格中随便填两个 1 到 10 之间的数.从第三个方格开始,在每个方格里填入前两个方格里的数之和.让你的朋友一直算出第 10 个方格里的数.假如你的朋友一开始填入方格的数是 7 和 3 ,那么前 10 个方格里的数应该是 7 3 10 13 23 36 59 95 154 249 现在,叫你的朋友报出第 10 个方格里的数,你只需要在计算器上按几个键,便能说出第 11 个方格里的数应该是多少.你的朋友会

数学思想:为何我们把 x&#178;读作x平方

要弄清楚这个问题,我们得先认识一个人.古希腊大数学家 欧多克索斯,其在整个古代仅次于阿基米德,是一位天文学家.医生.几何学家.立法家和地理学家. 为何我们把 x2读作x平方呢? 古希腊时代,越来越多的无理数(不可公度比)的发现迫使希腊人不得不研究这些数.它们确实是数吗?它们出现于集合论证过程中,而整数和整数之比则既出现于几何也出现于一般的数量研究中.用于可公度的长度.面积和体积的几何证明,怎样才能推广用之于不可公度的这些量呢? 欧多克索斯引入了变量这个概念.量跟数不同,数是从一个跳到另一个,例如

Java初学者:内建函数计算简单的数学表达式

这个应该在之前写的,忘记了,补上 这次我们说一下如何用java计算数学表达式的值,比如,我们要计算sin(pi/3) + cos(pi/6) + 5.6^3,怎么计算呢?这里我们需要用到java的math的内建函数,所谓内建函数,就是java已经给你的方法,你用就好了,有时候你需要自己导入包,但math却不用,java会自动导入,不用你手动导入.下面我们来看一下这个例子: 编译运行通过,没问题,这个很简单. Math.PI, 就是派了,Math.pow(z, 3),就是计算z的立方,Math.s

数学思想

数学思想,是指现实世界的空间形式和数量关系反映到人们的意识之中,经过思维活动而产生的结果.数学思想是对数学事实与理论经过概括后产生的本质认识:基本数学思想则是体现或应该体现于基础数学中的具有奠基性.总结性和最广泛的数学思想,它们含有传统数学思想的精华和现代数学思想的基本特征,并且是历史地发展着的.通过数学思想的培养,数学的能力才会有一个大幅度的提高.掌握数学思想,就是掌握数学的精髓. 函数思想,是指用函数的概念和性质去分析问题.转化问题和解决问题.方程思想,是从问题的数量关系入手,运用数学语言将