一些数学小思维Tips长期更新积累
来源:互联网 发布:php源代码加密 原理 编辑:程序博客网 时间:2024/05/22 12:05
1.数根的求法
数根的概念:如果把一个数的各位数字相加得到一个和,再把这个和的各位数字相加又得一个和,再继续作数字和,直到最后的数字和是个位为止,那么这个数就是该数的数根。
求法:
int num[]={9,1,2,3,4,5,6,7,8};root_x = num[x%9];
如果x特别大,比如x有100位,可以先用字符串模拟一次得到一个较小的数x’,然后就可以知道x的数根为 root_x=num[x’% 9];
2.快速求N!的位数
首先要知道一个数有多少位的求法,x的位数为lg(x)+1;
其次用到斯特林公式是求当n很大的时候n!的近似值,即使n很小时也会非常精确;
综上所述:求N!的位数的方法是 lg(n!)+1;而 n!的近似值用斯特林公式即可求;
那么位数为:
((log(sqrt(2*n*pi)) + n * log((double)n) - n) / log(10.0) ) + 1;
3.威尔逊定理
当且仅当p为素数时,[ (p-1)! +1 ] mod p = 0;
因为:[ (p-1)! +1 ] mod p= (p-1)!%p + 1%p = p-1 +1 =p = 0;
推广:
- 当p是素数时,(p-1)! Mod p = p-1;
当p不是素数时, (p-1)! Mod p = 0;
例题:求 (n-1)! Mod n :
Solutions :
if(n==4) ans=2; //4是个特例 else if(n为素数) ans=n-1; else ans = 0;
4.由任意三角形的顶点坐标求其面积
三角形的面积算法用海伦公式一般是不提倡的,介绍一种新的方法:
double area(dounle x0,double y0,double x1,double y1,double x2,double y2){ return x0*y1+x2*y0+x1*y2-x2*y1-x0*y2-x1*y0;}
它给出的是三角形有向面积的两倍;一种较为简单的记忆方法:
就相当于求该行列式的值。
可以延生到一个问题:判断一个点o是否在三角形的内部问题
当且仅当S△ABC=S△OAB+S△OBC+S△OCA时,该点在三角形内,其中判断两个浮点数是否相等时,要注意两个数的差是否小于一个事先给定的eps 1e-6;
5.卡塔兰数(Catalan)
比百度百科更好的解释:
http://www.cppblog.com/MiYu/archive/2010/08/07/122573.html
数列的前几项为:1,1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012,
742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190,
6564120420, 24466267020, 91482563640, 343059613650, 1289904147324,
4861946401452, …
一般的常用递推公式:h(n)=h(n-1)*(4*n-2)/(n+1);(h(0)=h(1)=1)
常见的应用:栈出的次序,括号配对的姿势
6.费马数
费马数是以数学家费马命名一组自然数,具有形式:
其中 n 为非负整数。所有具有形式 2^n+ 1 的素数必然是费马数,这些素数称为费马素数。已知的费马素数只有 F0 至 F4 五个。
性质:
- 任意两个费马数都互质。
- Fn的位数D(n,b)可以表示成以b 为基数就是
- 除了F1 = 2 + 3以外没有费马数可以表示成两个素数的和。
- 当p是奇素数的时候,没有费马数可以表示成两个数的p次方相减的形式。
- 除了F0和F1,费马数的最后一位是7。
- 所有费马数的倒数之和是无理数。
此部分持续更新中..
Final:初等数论①读书笔记
1.令 p1=2 , p2=3 , p3=5 , p4=7 … pn=第n个素数,设 X = (p1*p2*p3*p4*…pn)+1,那么X也是素数。
2.凡大于4的偶数都是两个奇素数之和。(哥德巴赫猜想)
3.假设a和b都是正整数,且a>b,a = b*q+r (0 < r < b),其中q,r都是正整数,则a和b的最大公约数等于b和r的最大公约数,即(a,b)=(b,r)。
..未完
- 一些数学小思维Tips长期更新积累
- 数学小知识(长期更新)
- 一些常规小算法【长期更新】
- 小知识点 长期更新
- CLion的一些使用小技巧(长期更新)
- unity 相关的一些小tips (不定期更新)
- Python--一些重要的小tips【持续更新】
- 数学定理及部分代码(长期更新)
- sql语句的一些小积累 持续更新。。。
- (长期积累)一些linux内核学习方法积累
- (长期积累)一些linux内核学习方法积累
- 小积累[更新中...]
- 3.一些小tips
- 这里将长期更新一些算法小练习,供自己和同行学习和参考
- 关于软件的使用中的一些小问题的记录汇总(长期更新)
- 一些工作中遇到的小问题,以及一些小技巧积累,慢慢更新
- JavaScript 小知识记录(长期更新)
- 长期更新--零碎的小算法技巧
- Java 中的== 和equals()方法
- JS、JQuery和ExtJs的跨域处理
- HDU 4183 Pahom on Water (拆点最大流)
- java内存简析
- ural 1008. Image Encoding bfs
- 一些数学小思维Tips长期更新积累
- 计算字符串最后一个单词的长度,单词以空格隔开。
- 090 Subsets II [Leetcode]
- 树莓派安装TP-link wn725n网卡驱动
- sqlplus无法退格 (backspace)
- Java中内存泄露及垃圾回收机制
- 327 亲和串【kmp】
- Unity优化大全(三)之CPU-Physics
- 向量 规范化