[MIT6.006] 11. Integer Arithmetic, Karatsuba Multiplication 整型算术,Karatsuba乘法

很多人不喜欢√2的表达,他们认为它不是一个数。

一、卡塔兰数 Catalan numbers

在数方面上,有个著名的数叫卡塔兰数 Catalan numbers,它是组合数学中一个常在各种计数问题中出现的数列。其中它能解决一个叫求括号化方案数量的问题。如图下:

在卡塔兰数下,设P为平衡的父字符串集。

(1)λ属于P集合(λ是空字符串);

(2)如果α,β都属于P,则(α)β 也属于P。

如果现在有个空字符串(C0=1)和一对括号(C1=1),则C2=C0C1 + C1C0。归纳结果则为:Cn+1 = ∑CkCn-k (n≥0)。

关于卡塔兰树的一个有趣集合问题,如下图所示:

二、牛顿法 Newton‘s Method

牛顿法就是通过不断逼近某函数f(x)来求取f(x)=0的根解。例如下图中f(x) = x2 - a。

使用牛顿法求解过程中,数的实际精度符合二次收敛(Quadratic convergence)的特性,即梯度双倍增长,如下图:

 三、高精度乘法

现有两个大数,x,y。首先将x,y分别拆开成为两部分,可得x1,x0,y1,y0。他们的关系如下:

但这种方式的高精度乘法时间上不是最有效率的,最有效率的是下面的Karatsuba算法:

原文地址:https://www.cnblogs.com/alvinai/p/12701520.html

时间: 2024-11-06 07:18:56

[MIT6.006] 11. Integer Arithmetic, Karatsuba Multiplication 整型算术,Karatsuba乘法的相关文章

【java】线程安全的整型类AtomicInteger

一.遇见AtomicInteger 在看项目代码的时候看到这个类,发现其功能很简单,就是一个整型变量的类型,出于好奇看了其类定义. 该类位于java.util.concurrent.atomic下,在concurrent下可知该类肯定与并发和原子性相关. 二.进一步了解 源码非常简单,结合其他人的博客,基本可以了解到AtomicInteger类是一个提供原子操作的Integer类. 普通的整型类如int和Integer类,在++i/i++等操作并不是线程安全的,在并发环境下容易出现脏数据. At

Integer.valueOf(String)方法字符串转整型- 你肯定不知道的疑惑!

有个仁兄在 StackOverflow 上发起了一个问题,是这么问的: " 我被下面的代码搞晕了,为什么它们会返回不同的值?" 1 2 3 System.out.println(Integer.valueOf("127")==Integer.valueOf("127")); System.out.println(Integer.valueOf("128")==Integer.valueOf("128"));

leetcode——String to Integer (atoi) 字符串转换为整型数(AC)

mnesia在频繁操作数据的过程可能会报错:** WARNING ** Mnesia is overloaded: {dump_log, write_threshold},可以看出,mnesia应该是过载了.这个警告在mnesia dump操作会发生这个问题,表类型为disc_only_copies .disc_copies都可能会发生. 如何重现这个问题,例子的场景是多个进程同时在不断地mnesia:dirty_write/2 mnesia过载分析 1.抛出警告是在mnesia 增加dump

Algorithm(1) - Karatsuba multiplication

这个系列主要是记一下目前效率较高或者比较出名的一些算法. Karatsuba multiplication: x=5678   then: a=56  b=67 y=1234           c=12 d=34 setps: 1:   a*c = 672    ① 2:   b*d=2652   ② 3:  (a+b)(c+d)=6164  ③ 4:  ③-②-①=2840 5:  6720000 + 2652+284000 = 7006652 Recursive algorithm: wh

LeetCode 12 Integer to Roman(整型数到罗马数)

翻译 给定一个整型数值,将其转换到罗马数字. 输入被保证在1到3999之间. 原文 Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 to 3999. 我不会告诉你一开始我是用的无数个变量和if-- 后来实在受不了这么多变量就将其写成了枚举,那么接下来就迎刃而解了. 为了让大家理解罗马数是怎么计数的,这里我截了一张图,具体的大家可以自行用微软Bing

【转】浮点型转换整型的快速方法介绍

原文网址:http://blog.csdn.net/leakers_zzw/article/details/8005762 [注明] 现有的Intel中的SSE指令 cvtps2dq XMM,XMM/m128 支持把源存储器4个单精度浮点数变成4个双字有符号整数,结果送入目的寄存器,内存变量必须对齐内存16字节,另外还有其他指令支持双精度和整型的转换. 转载本文,作为C算法设计的探讨. 在计算机图形运算中,常常要将浮点数转换为整数,例如在图像的光栅化阶段,就要执行大量的类型转换,以便将浮点数表示

MySQL数据类型--整型

整数类型是数据库中最基本的数据类型.标准SQL中支持INTEGER和SMALLINT这两种整数类型.MySQL数据库除了支持这两种类型外,还扩展支持了TINYINT.MEDIUMINT和BIGInT. 各种整数类型的取值范围.存储的字节数.特点. 整型 字节数 无符号数的取值范围 有符号数的取值范围 TINYINT 1 0~255 -128~127 SMALLINT 2 0~65535   -32768~12767 MEDIUMINT 3 0~16777215    -8388608~83886

CPython对象模型:整型

前一篇:CPython对象模型:基础 程序中,最常用的数据类型之一就是整型了. 本篇博文记录的就是研究整型过程中的一些心得. 1 PyLongObject 1.1 版本之别 在python2.x中,整型对象还有两种:不太大的整数int(约等于C语言中long)和大整数long. 在python3之后,这两种类型合并为int,但新的int类型的表现和2.x中的long其实更为接近. 在python2.x中,int是一个定长的类型,并且采用了两个不同的内存池分别存放小整数和大整数: 但在python

MVC验证12-使用DataAnnotationsExtensions对整型、邮件、最小值、文件类型、Url地址等验证

原文:MVC验证12-使用DataAnnotationsExtensions对整型.邮件.最小值.文件类型.Url地址等验证 本文体验来自http://dataannotationsextensions.org/的DataAnnotationsExtensions.MVC3,是DataAnnotation的扩展,可以在客户端和服务端进行双重验证,能验证的类型包括:   ● 邮件验证 ● 整型验证 ● 日期验证 ● 数字验证(即从零开始的数字,不包括带小数点) ● 是否相同验证 ● 文件类型验证