巴比伦函数python,巴比伦计数方法
巴比伦方法求平方根
思路:
创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都做网站、网站建设、金沙网络推广、小程序制作、金沙网络营销、金沙企业策划、金沙品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供金沙建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com
巴比伦算法的原理说白了就是求这么一个x使得x * x = n.
但问题是为什么迭代可以求得x的值呢?
原理如下:
假设最终返回的结果是x(n), 那么按照迭代算法来看显然是从x(n - 1)推导过来的。
即:
x(n) = (x(n - 1) + N / x(n - 1)) / 2
做个变形就可以得到:
x(n - 1) ^ 2 - 2 * x(n) * x(n - 1) + N = 0
将N用a * a 替换,就得到了如下式子:
x(n - 1) ^ 2 - 2 * x(n) * x(n - 1) + a ^ 2 = 0
因为x(n) = a,所以有:
x(n - 1) ^ 2 - 2 * a * x(n - 1) + a ^ 2 = 0;
即:
(x(n - 1) - a) ^ 2 = 0;
因为x(n - 1) 和 x(n) 是很接近的,为了解释这点可以从两个角度着手:
第一个角度:数学角度
x(n) = ( x(n - 1) + N / x(n - 1)) / 2
令函数G(x) = x(n)
那么,G(x)这个函数是一个对勾函数,在第一象限有一个最小值等于x,该最小值的位置为(x, N / x),
所以只要找到这个点求出该点的G(x)那么我们就能解决该问题,而我们的解决方法便是从x 0的位置起,
逐步逼近这个极值点。因此,当lim(n-无穷大)x(n) = x(n - 1)
另外一个角度:程序角度
当跳出while(y + eps x)循环时,这时候x(n)和x(n - 1)无限接近
正是由于x(n)接近于x(n - 1),才得到如下的式子:
(x(n) - a) ^ 2 = 0
最后便得到了x(n) = a
题目连接:leetcode Sqrt(x)
class GetRoot {
public:
constdouble eps = 1e-9;
public:
double RootNumber(double n) {
double x = n;
double y = 1;
while (x y + eps) {
x = (x + y) / 2;
y = n / x;
}
return x;
}
};
int main(void) {
GetRoot ans;
double n;
while (cin n) {
cout ans.RootNumber(n) endl;
}
return 0;
}
什么叫几何
埃及和巴比伦人在毕达哥拉斯之前1500年就知道了毕达哥拉斯定理,也就是我们中国的勾股定理。古埃及人还有方形棱锥(截去尖顶的金字塔形)的体积计算公式,巴比伦还有一个三角函数表。这些先进的数学原理,有时令我们不得不怀疑是否有史前人类或外星人的参与呢。
最早有关几何的记录可以追溯到公元前3000年的古埃及、古印度和古巴比伦。它们利用长度、角度、面积和体积的经验原理,用于测绘、建筑、天文和各种工艺制作等方面的测算。这些原理非常复杂和先进,现代的数学家都需要用微积分来推导它们。
我们都知道几何学,但你知道“几何”这个名称是怎么来的吗?
在古代,这门数学分科并不叫几何,而是叫“形学”。听名字,大概是指与图形有关的数学。但中国古时候的“几何”并不是一个专有数学名词,而是文言文虚词,意思是“多少”。
例如曹操的著名乐府诗《龟虽寿》里写道:“对酒当歌,人生几何?”这里的“几何”就是多少的意思。而《陌上桑》中那个从南而来的使君看上了美丽的采桑女罗敷,询问她:“罗敷年几何?”这里的“几何”也是“多少”的意思。
直到20世纪初,“几何”这个名字才有了比较明显地取代“形学”一词的趋势,到了20世纪中期,“形学”一词再难得露上一面,“几何”成为了数学分科的正式名称。
在笛卡尔之前,几何是几何,代数是代数,他们各自独立互不相扰。但是,传统的几何过分依赖图形和形式演绎,而代数又过分受法则和公式的限制,这一切都制约了数学的发展。有一天,笛卡尔突发奇想,能不能找到一种方法,架起沟通代数与几何的桥梁呢?为此他常常花费大量的时间去思考。
1619年11月的一天,笛卡尔因病躺在了床上,无所事事的他又想起了那个折磨他很久的问题。
这时,天花板上有一只小小的蜘蛛从墙角慢慢地爬过来,吐丝结网,忙个不停。从东爬到西,从南爬到北。结一张网,小蜘蛛要走多少路啊!笛卡尔开始计算蜘蛛走过的路程。他先把蜘蛛看成一个点,接着思考这个点离墙角有多远?离墙的两边又有多远?
想着想着就睡着了。结果在梦中,他好像看见蜘蛛还在爬,离两边墙的距离也是一会儿大,一会儿小……大梦醒来的笛卡尔突然明白——要是知道蜘蛛和两墙之间的距离关系,不就能确定蜘蛛的位置吗?确定了位置后,自然就能算出蜘蛛走的距离了。于是,他郑重地写下了一个定理:在互相垂直的两条直线下,一个点可以用到这两条直线的距离,也就是两个数来表示,这个点的位置就被确定了。
笛卡尔写下的定理就是现在应用广泛的坐标系。可在当时,这真是了不起的发现,这是第一次用数形结合的方式将代数与几何连接起来了。它用数来表示几何概念,代数形式表示几何图形。这是解析几何学的诞生。沿着这条思路,在众多数学家的努力下,数学的历史发生了重要的转折,解析几何学也最终被建立起来。
百变几何
怎么在python中输入非指定字符后报错
try except 不可以处理吗?把你的正常代码替换到1/0这个位置。try外面再包裹个while类的,异常后还可以继续重新走正常流程
import traceback
try:
1/0
#except Exception,e:
# print traceback.format_exc()
except Exception , e:
print e
三角函数
三角函数 是 基本初等函数 之一 , 是以角度(数学上最常用弧度制,下同)为 自变量 ,角度对应 任意角 终边与 单位圆 交点坐标或其比值为 因变量 的函数。也可以等价地用与 单位圆 有关的各种线段的长度来定义。三角函数在研究三角形和 圆 等几何形状的性质时有重要作用,也是研究周期性现象的基础数学工具。在 数学分析 中,三角函数也被定义为无穷级数或特定微分方程的解,允许它们的取值扩展到任意实数值,甚至是 复数 值。
常见的三角函数包括正弦函数、余弦函数和正切函数。在航海学、测绘学、工程学等其他学科中,还会用到如余切函数、正割函数、余割函数、正矢函数、余矢函数、 半正矢函数 、半余矢函数等其他的三角函数。不同的三角函数之间的关系可以通过几何直观或者计算得出,称为三角恒等式。
三角函数一般用于计算三角形中未知长度的边和未知的角度,在导航、工程学以及物理学方面都有广泛的用途。另外,以三角函数为模版,可以定义一类相似的函数,叫做双曲函数。常见的双曲函数也被称为 双曲正弦函数 、 双曲余弦函数 等等。三角函数(也叫做圆函数)是角的函数;它们在研究三角形和建模周期现象和许多其他应用中是很重要的。三角函数通常定义为包含这个角的直角三角形的两个边的比率,也可以等价的定义为单位圆上的各种线段的长度。更现代的定义把它们表达为无穷级数或特定微分方程的解,允许它们扩展到任意正数和负数值,甚至是复数值。
中文名
三角函数
外文名
trigonometric
function
提出者
印度数学家
提出时间
公元五世纪
适用领域
函数及图像
应用学科
数学
目录
[if !supportLists]. [endif]1 发展历史
[if !supportLists]. [endif]▪ 起源
[if !supportLists]. [endif]▪ 古希腊历史
[if !supportLists]. [endif]▪ 阿拉伯历史
[if !supportLists]. [endif]▪ 弦表的发明
[if !supportLists]. [endif]▪ 传入中国
[if !supportLists]. [endif]2 定义
[if !supportLists]. [endif]▪ 直角三角形三角函数定义
[if !supportLists]. [endif]▪ 基本三角函数关系的速记方法
[if !supportLists]. [endif]▪ 变化规律
[if !supportLists]. [endif]▪ 任意角三角函数定义
[if !supportLists]. [endif]▪ 单位圆定义
[if !supportLists]. [endif]▪ 级数定义
[if !supportLists]. [endif]3 三角学
[if !supportLists]. [endif]4 特殊角
[if !supportLists]. [endif]5 几何性质
[if !supportLists]. [endif]▪ 函数图象
[if !supportLists]. [endif]▪ 最小正周期
[if !supportLists]. [endif]6 诱导公式
[if !supportLists]. [endif]▪ 公式内容
[if !supportLists]. [endif]▪ 推导方法
[if !supportLists]. [endif]7 关于三角恒等式
[if !supportLists]. [endif]▪ 两角和与差
[if !supportLists]. [endif]▪ 和差化积
[if !supportLists]. [endif]▪ 积化和差
[if !supportLists]. [endif]▪ 二倍角公式
[if !supportLists]. [endif]▪ 三倍角公式
[if !supportLists]. [endif]▪ n倍角公式
[if !supportLists]. [endif]▪ 半角公式
[if !supportLists]. [endif]▪ 辅助角公式
[if !supportLists]. [endif]▪ 万能公式
[if !supportLists]. [endif]▪ 降幂公式
[if !supportLists]. [endif]▪ 三角和
[if !supportLists]. [endif]▪ 幂级数
[if !supportLists]. [endif]▪ 泰勒展开式
[if !supportLists]. [endif]▪ 傅里叶级数
[if !supportLists]. [endif]8 概念
[if !supportLists]. [endif]9 推广
[if !supportLists]. [endif]10 复数性质
[if !supportLists]. [endif]11 相关定理
[if !supportLists]. [endif]▪ 解释
[if !supportLists]. [endif]▪ 正弦定理
[if !supportLists]. [endif]▪ 余弦定理
[if !supportLists]. [endif]▪ 正切定理
[if !supportLists]. [endif]▪ 广义射影定理
[if !supportLists]. [endif]▪ 三角恒等式
[if !supportLists]. [endif]12 函数介绍
[if !supportLists]. [endif]▪ 正弦函数
[if !supportLists]. [endif]▪ 余弦函数
[if !supportLists]. [endif]▪ 正切函数
[if !supportLists]. [endif]▪ 余切函数
[if !supportLists]. [endif]▪ 正割函数
[if !supportLists]. [endif]▪ 余割函数
[if !supportLists]. [endif]▪ 正矢函数
[if !supportLists]. [endif]▪ 余矢函数
[if !supportLists]. [endif]▪ 半正矢函数
[if !supportLists]. [endif]▪ 半余矢函数
[if !supportLists]. [endif]▪ 外正割函数
[if !supportLists]. [endif]▪ 外余割函数
[if !supportLists]. [endif]13 记忆口诀
发展历史
编辑
起源
公元五世纪到十二世纪,印度数学家对三角学作出了较大的贡献。尽管当时三角学仍然还是天文学的一个 计算工具 ,是一个附属品,但是 三角学 的内容却由于印度数学家的努力而大大的丰富了。
三角学中” 正弦 ”和” 余弦 ”的概念就是由印度数学家首先引进的,他们还造出了比 托勒密 更精确的正弦表。
我们已知道,托勒密和 希帕克 造出的弦表是 圆 的全 弦 表,它是把圆弧同弧所夹的弦对应起来的。印度数学家不同,他们把半弦( AC )与全弦所对弧的一半( AD )相对应,即将 AC 与 ∠AOC 对应,这样,他们造出的就不再是”全弦表”,而是”正弦表”了。
印度人 称连结 弧 ( AB )的两端的弦( AB )为”吉瓦(jiba)”,是弓弦的意思;称AB的一半( AC ) 为”阿尔哈吉瓦”。后来”吉瓦”这个词译成阿拉伯文时被误解为”弯曲”、”凹处”,阿拉伯语是 ”dschaib”。十二世纪, 阿拉伯文 被转译成拉丁文,这个字被意译成了”sinus”。 [1]
古希腊历史
早期对于三角函数的研究可以追溯到古代。 古希腊 三角术的奠基人是公元前2世纪的 喜帕恰斯 。他按照 古巴比伦 人的做法,将圆周分为360等份(即圆周的弧度为360度,与现代的 弧度制 不同)。对于给定的弧度,他给出了对应的弦的长度数值,这个记法和现代的正弦函数是等价的。喜帕恰斯实际上给出了最早的三角函数数值表。然而古希腊的三角学基本是球面三角学。这与古希腊人研究的主体是天文学有关。 梅涅劳斯 在他的著作《球面学》中使用了正弦来描述球面的 梅涅劳斯定理 。古希腊三角学与其天文学的应用在埃及的 托勒密 时代达到了高峰,托勒密在《 数学汇编 》( Syntaxis Mathematica )中计算了36度角和72度角的正弦值,还给出了计算和角公式和半角公式的方法。托勒密还给出了所有0到180度的所有整数和半整数弧度对应的正弦值。
古希腊文化传播到 古印度 后,古印度人对三角术进行了进一步的研究。公元5世纪末的数学家 阿耶波多 提出用弧对应的弦长的一半来对应半弧的正弦,这个做法被后来的古印度数学家使用,和现代的正弦定义一致了。阿耶波多的计算中也使用了余弦和正割。他在计算弦长时使用了不同的单位,重新计算了0到90度中间隔三又四分之三度(3.75°)的三角函数值表。然而古印度的数学与当时的中国一样,停留在计算方面,缺乏系统的定义和演绎的证明。阿拉伯人也采用了古印度人的正弦定义,但他们的三角学是直接继承于古希腊。阿拉伯天文学家引入了 正切 和 余切 、 正割 和 余割 的概念,并计算了间隔10分(10′ ) 的正弦和正切数值表。到了公元14世纪,阿拉伯人将三角计算重新以算术方式代数化(古希腊人采用的是建立在几何上的推导方式)的努力为后来三角学从天文学中独立出来,成为了有更广泛应用的学科奠定了基础。
阿拉伯历史
进入15世纪后, 阿拉伯数学 文化开始传入欧洲。随着欧洲商业的兴盛,航行、历法测定和地理测绘中出现了对三角学的需求。在翻译阿拉伯数学著作的同时,欧洲数学家开始制作更详细精确的 三角函数值 表。 哥白尼 的学生乔治·约阿希姆·瑞提克斯制作了间隔10秒(10″ ) 的正弦表,有9位精确值。瑞提克斯还改变了正弦的定义,原来称弧对应的弦长是正弦,瑞提克斯则将角度对应的弦长称为正弦。16世纪后,数学家开始将 古希腊 有关球面三角的结果和定理转化为平面三角定理。 弗朗索瓦·韦达 给出了托勒密的不少结果对应的平面三角形式。他还尝试计算了多倍角正弦的表达方式。
18世纪开始,随着解析几何等分析学工具的引进,数学家们开始对三角函数进行分析学上的研究。牛顿在1669年的《分析学》一书中给出了正弦和余弦函数的 无穷级数 表示。Collins将牛顿的结果告诉了詹姆斯·格列高里,后者进一步给出了正切等三角函数的无穷级数。 莱布尼兹 在1673年左右也独立得到了这一结果。 欧拉 的《无穷小量分析引论》( Introductio in Analysin Infinitorum ,1748年)对建立三角函数的分析处理做了最主要的贡献,他定义三角函数为无穷级数,并表述了 欧拉公式 ,还有使用接近现代的简写 sin. 、 cos. 、 tang. 、 cot. 、 sec. 和 cosec. 。
弦表的发明
根据认识,弦表的制作似应该是由一系列不同的角出发,去作一系列 直角三角形 ,然后一一量出AC,A’C’,A’’C’’…之间的距离。然而,第一张弦表制作者希腊文学家希帕克 (Hipparchus,约前180~前125)不是这样作,他采用的是在同一个固定的 圆 内,去计算给定度数的圆弧AB所对应的弦AB的长。这就是说,希帕克是靠计算,而不是靠工具量出弦长来制表的,这正是他的卓越之处。希帕克的原著早已失传,我们所知关于希帕克在三角学上的成就,是从公元二世纪希腊著名天文学家托勒密的遗著《天文集》中得到的。虽然托勒密说他的这些成就出自希帕克,但事实上不少是他自己的创造。
据托勒密书中记载,为了度量圆弧与弦长,他们采用了巴比伦人的60进位法。把 圆周 360等分,把它的半径60等分,在圆周和半径的每一等分中再等分60份,每一小份又等分为60份,这样就得出了托勒密所谓的第一小份和第二小份。很久以后,罗马人把它们分别取名为”partes minutae primae”和”partes minutae
secundae”;后来,这两个名字演变为”minute”和”second”,成为角和时间的度量上” 分 ”和” 秒 ”这两个单位得起源。
建立了半径与圆周的度量单位以后, 希帕克 和 托勒密 先着手计算一些特殊 圆弧 所对应的弦长。比如 60°弧(1/6圆 周长 )所对的弦长,正好是内接 正六边形 的边长,它与半径相等,因此得出60°弧对应的弦值是60个半径单位(半径长的1/60为一个单位);用同样的方法,可以算出120°弧、90°弧以及72°弧所对应的弦值。有了这些弧所对应的弦值,接着就利用所称的” 托勒密定理 ”,来推算两条已知所对弦长的弧的”和”与”差”所对的弦长,以及由一条弧所对的弦长来计算这条弧的一半所对的弦长。正是基于这样一种几何上的推算。他们终于造出了世界上第一张弦表。
传入中国
三角学 输入中国,开始于明 崇祯 4年(1631年),这一年, 邓玉函 、 汤若望 和 徐光启 合编《 大测 》,作为 历书 的一部份呈献给朝廷,这是我国第一部编译的三角学。在《大 测 》中,首先将sine译为”正半弦”,简称” 正弦 ”,这就成了“正弦” 一词 的由来。 [2]
定义
编辑
直角三角形三角函数定义
在直角三角形中,当平面上的三点A、B、C的连线,AB、AC、BC,构成一个 直角三角形 ,其中∠ACB为 直角 。对∠BAC而言, 对边 (opposite)a=BC、 斜边 (hypotenuse)c=AB、 邻边 (adjacent)b=AC,则存在以下关系:
基本函数 英文 缩写 表达式 语言描述 [if !vml][endif] 三角形
正弦函数 sine sin a/c ∠A 的对边比斜边
余弦函数 cosine cos b/c ∠A 的邻边比斜边
正切函数 tangent tan a/b ∠A 的对边比邻边
余切函数 cotangent cot b/a ∠A 的邻边比对边
正割函数 secant sec c/b ∠A 的斜边比邻边
余割函数 cosecant csc c/a ∠A 的斜边比对边
注:正切函数、余切函数曾被写作 tg 、 ctg , 现已不用这种写法 。
基本三角函数关系的速记方法
[if !vml][endif] 六边形
如右图,六边形的六个角分别代表六种三角函数,存在如下关系:
1)对角相乘乘积为1,即sinθ·cscθ=1; cosθ·secθ=1; tanθ·cotθ=1。
2)六边形任意相邻的三个顶点代表的三角函数,处于中间位置的函数值等于与它相邻两个函数值的乘积,如:sinθ=cosθ·tanθ;tanθ=sinθ·secθ...
3)阴影部分的三角形,处于上方两个顶点的平方之和等于下顶点的平方值,如:
[if !vml]
[endif]
;
[if !vml]
[endif]
;
[if !vml]
[endif]
。
变化规律
正弦 值在
[if !vml]
[endif]
随角度增大(减小)而增大(减小),在
[if !vml]
[endif]
随角度增大(减小)而减小(增大);
余弦值在
[if !vml]
[endif]
随角度增大(减小)而增大(减小),在
[if !vml]
[endif]
随角度增大(减小)而减小(增大);
正切 值在
[if !vml]
[endif]
随角度增大(减小)而增大(减小);
余切值在
[if !vml]
[endif]
随角度增大(减小)而减小(增大)。
注:以上其他情况可类推,参考第五项:几何性质。
除了上述六个常见的函数,还有一些不常见的三角函数:
函数名 与常见函数转化关系
正矢函数 [if !vml]
[endif]
[if !vml][endif] versin
[if !vml]
[endif]
余矢函数 [if !vml]
[endif]
[if !vml]
[endif]
半正矢函数 [if !vml]
[endif]
[if !vml]
[endif]
半余矢函数 [if !vml]
[endif]
[if !vml]
[endif]
外正割函数 [if !vml]
[endif]
外余割函数 [if !vml]
[endif]
任意角三角函数定义
在 平面直角坐标系 xOy中设∠β的始边为x轴的正半轴,设点P(x,y)为∠β的终边上不与原点O重合的任意一点,设r=OP,令∠β=∠α,则:
[if !vml]
[endif]
,
[if !vml]
[endif]
,
[if !vml]
[endif]
,
[if !vml]
[endif]
,
[if !vml]
[endif]
,
[if !vml]
[endif]
。
单位圆定义
[if !vml][endif] 三角函数
六个三角函数也可以依据 半径 为1中心为原点的 单位圆 来定义。单位圆定义在实际计算上没有大的价值;实际上对多数角它都依赖于 直角三角形 。但是 单位圆 定义的确允许三角函数对所有 正数 和 负数 辐角都有定义,而不只是对于在 0 和 π/2 弧度 之间的角。它也提供了一个图像,把所有重要的三角函数都 包含 了。根据 勾股定理 ,单位圆的 方程 是:对于圆上的任意点( x,y ), x²+y²=1 。
图像中给出了用 弧度 度量的一些常见的角:逆时针方向的度量是 正角 ,而顺时针的度量是 负角 。设一个过 原点 的线,同 x 轴正半部分得到一个角 θ ,并与单位圆相交。这个交点的 x 和 y 坐标分别等于 cosθ 和 sinθ 。图像中的三角形确保了这个公式;半径等于斜边且长度为1,所以有 sinθ = y /1和 cosθ = x /1。单位圆可以被视为是通过改变邻边和对边的长度,但保持斜边等于 1的一种查看无限个三角形的方式。
对于大于 2π 或小于等于 2π 的角度,可直接继续绕单位圆旋转。在这种方式下,正弦和余弦变成了周期为 2π 的 周期函数 :对于任何角度 θ 和任何 整数 k 。
周期函数的 最小正周期 叫做这个函数的“ 基本周期 ”。正弦、余弦、正割或余割的基本周期是全圆,也就是 2π弧度或 360°;正切或余切的基本周期是半圆,也就是 π 弧度或 180°。上面只有正弦和余弦是直接使用单位圆定义的,其他四个三角函数的定义如图所示。
在 正切函数 的图像中,在角 k π 附近变化缓慢,而在接近角 ( k + 1/2)π 的时候变化迅速。正切函数的图像在 θ = ( k + 1/2)π 有垂直渐近线。这是因为在 θ 从左侧接进 ( k + 1/2)π 的时候函数接近 正无穷 ,而从右侧接近 ( k + 1/2)π 的时候函数接近负无穷。
[if !vml][endif] 三角函数
另一方面,所有基本三角函数都可依据中心为 O 的单位圆来定义,类似于历史上使用的几何定义。特别 是,对于这个圆的 弦 AB ,这里的 θ 是对向角的一半,sin θ 是 AC (半弦),这是印度的 阿耶波多 介入的定义。cos θ 是水平距离 OC ,versin θ =1-cos θ 是 CD 。tan θ 是通过 A 的 切线 的 线段 AE 的长度,所以这个函数才叫 正切 。cot θ 是另一个切线段 AF 。sec θ = OE 和csc θ = OF 是割线(与圆相交于两点)的线段,所以可以看作 OA 沿着 A 的切线分别向水平和垂直轴的投影。 DE 是exsec θ =sec θ -1(正割在圆外的部分)。通过这些构造,容易看出 正割 和正切函数在 θ 接近 π/2的时候发散,而余割和余切在 θ接近零的时候发散。
依据单位圆定义,可以做三个 有向线段 ( 向量 )来表示正弦、余弦、正切的值。如图所示,圆O是一个单位圆,P是 α 的 终边 与单位圆上的交点,M点是 P 在 x 轴的投影, A (1,0)是圆O与x轴 正半轴 的交点,过A点做过圆O的 切线 。
那么向量 MP 对应的就是 α 的 正
python确定一个数是不是完全平方数
1. 与依赖于任何浮动的问题(math.sqrt(x)或x**0.5)是你不能真正确定它的准确(对充分大的整数x,它不会是,甚至有可能溢出)。幸运的(如果是不急于;-)有很多纯整数的方法,如下面的...:
def is_square(apositiveint):
x = apositiveint // 2
seen = set([x])
while x * x != apositiveint:
x = (x + (apositiveint // x)) // 2
if x in seen: return False
seen.add(x)
return True
for i in range(110, 130):
print i, is_square(i)
提示:它是基于“巴比伦算法”的平方根,请参阅维基百科。它适用于任何正数,而您有继续 编辑:让我们看一个例子...
x = 12345678987654321234567 ** 2
for i in range(x, x+2):
print i, is_square(i)
这种版画,根据需要(和太;-)一个合理的金额:
152415789666209426002111556165263283035677489 True
152415789666209426002111556165263283035677490 False
请您提出了一种基于浮点结果的解决方案之前 CodeGo.net,确保他们正确地工作在这个简单的例子-它不是那么难(你只需要一些额外的检查,以防是有点过),只是需要多一点的关怀。 然后尝试用x**7并找到解决您会得到这个问题巧妙的方式,
OverflowError: long int too large to convert to float
你必须得到越来越多的聪明的数量不断增加,当然。 如果我很着急,当然,我gmpy-但后来,我明显偏向;-)。
import gmpy
gmpy.is_square(x**7)
1
gmpy.is_square(x**7 + 1)
是啊,我知道,这只是很容易感觉像作弊(有点我总体感觉对Python的;-)的方式-没有聪明可言,只是完美的直接和简单(和,在gmpy,绝对速度的情况下;-) ...
2. 用牛顿的快速零最接近的整数的平方根,那么它平方,看看它是否是你的号码。见isqrt。
3. 因为你永远无法靠当浮动(如计算平方根的这些方式),一个不易出错将是对处理
import math
def is_square(integer):
root = math.sqrt(integer)
if int(root + 0.5) ** 2 == integer:
return True
else:
return False
想像integer是9。math.sqrt(9)可能是3.0的,但它也可以是像2.99999或3.00001,因此现蕾结果马上是不可靠的。知道int取整数值,通过增加浮点值0.5我们会得到我们要找的,如果我们是在一个范围内的值,其中float仍然有足够细的分辨率来表示附近的一个为我们所期待的数字。
4. 我是新来的堆栈溢出,并做了一个快速脱脂找到解决的办法。我只是张贴在另一个线程(寻找完美的正方形)上的例子,一个细微的变化上面,我想我会包括什么,我贴在这里有一个细微的变化(使用nsqrt作为一个临时变量),如果它的利益/使用:
import math
def is_perfect_square(n):
if not ( ( isinstance(n, int) or isinstance(n, long) ) and ( n = 0 ) ):
return False
else:
nsqrt = math.sqrt(n)
return nsqrt == math.trunc(nsqrt)
5. 你可以二进制搜索的圆形平方根。平方的结果,以确定它的原始值相匹配。 你可能会更好过与FogleBirds回答-虽然小心,因为浮点数是近似的,它可以抛出这种方法了。你可以在原则上得到一个假阳性从一个大的整数,较完美的正方形,例如,由于丢失精度1以上。
6.
def f(x):
... x = x ** 0.5
... return int(x) == x
...
for i in range(10):
... print i, f(i)
...
0 True
1 True
2 False
3 False
4 True
5 False
6 False
7 False
8 False
9 True
7. 决定多久的数量就越大。 采取增量0.000000000000 ....... 000001 见,如果(SQRT(X))^ 2-x是大于/等于/大于δ较小并且基于增量误差决定。
8. 我不知道Python的,但你可以不喜欢:
function isSquare(x) = x == floor(sqrt(x) + 0.5)^2
也就是说,拿一个数,求平方根,四舍五入到最接近的整数,它平方,并测试它是作为原来的号码。 (floor并加入0.5做是为了防止类似案件sqrt(4)回国1.9999999...由于浮点运算,麦克grahams指出。) 如果你有兴趣,曾经有一个很好的判断以最快的方式,如果一个整数的平方根是一个整数。 编辑澄清。
9. 该回复不属于你的declarative的问题,而是一个隐含的问题,我在您发布的代码中看到,即“如何检查是否是整数?” 优先个回答你通常得到这个问题是“不要!”并且这是真的,在Python,类型检查不应该做的事情。 对于那些极少数的异常,不过,不是寻找数字的字符串表示小数点,那东西做isinstance函数:
isinstance(5,int)
True
isinstance(5.0,int)
False
当然适用于变量,而不是一个值。如果我想确定该值是否是一个整数,我会做到这一点:
x=5.0
round(x) == x
True
但正如其他人已经详细介绍,也有这种事情的大多数非玩具的例子来加以考虑浮点问题。
10. 我有轻微的原始巴比伦的方法。取而代之的是一套以存储每个生成的近似,只是最近的两个近似的存储和核对电流近似。这保存了大量的通过整套的近似值的浪费检查。我的java,而不是python和BigInteger类,而不是一个正常的原始整数。
BigInteger S = BigInteger.ZERO;
BigInteger x = BigInteger.ZERO;
BigInteger prev1 = BigInteger.ZERO;
BigInteger prev2 = BigInteger.ZERO;
Boolean isInt = null;
x = S.divide(BigInteger.valueOf(2));
while (true) {
x = x.add(preA.divide(x)).divide(BigInteger.valueOf(2));
if (x.pow(2).equals(S)) {
isInt = true;
break;
}
if (prev1.equals(x) || prev2.equals(x)) {
isInt = false;
break;
}
prev2 = prev1;
prev1 = x;
}
y=a(x-h)²的性质?
y=a(x-h)²+k(a≠0,a、h、k为常数),顶点坐标为(h,k) ,对称轴为直线x=h,顶点的位置特征和图像的开口方向与函数y=ax²的图像相同,当x=h时,y最大(小)值=k.有时题目会指出让你用配方法把一般式化成顶点式。
注意:与点在平面直角坐标系中的平移不同,二次函数平移后的顶点式中,h0时,h越大,图像的对称轴离y轴越远,且在x轴正方向上,不能因h前是负号就简单地认为是向左平移。
具体可分为下面几种情况:
当h0时,y=a(x-h)²的图像可由抛物线y=ax²向右平行移动h个单位得到;
当h0,k0时,将抛物线y=ax²向右平行移动h个单位,再向上移动k个单位,就可以得到y=a(x-h)²+k的图像。
扩展资料:
大约在公元前480年,古巴比伦人和中国人已经使用配方法求得了二次方程的正根,但是并没有提出通用的求解方法。公元前300年左右,欧几里得提出了一种更抽象的几何方法求解二次方程。
7世纪印度的婆罗摩笈多是第一位懂得使用代数方程的人,它同时容许有正负数的根。
11世纪阿拉伯的花拉子密 独立地发展了一套公式以求方程的正数解。亚伯拉罕·巴希亚(亦以拉丁文名字萨瓦索达著称)在他的著作Liber embadorum中,首次将完整的一元二次方程解法传入欧洲。
参考资料来源:百度百科-二次函数
当前文章:巴比伦函数python,巴比伦计数方法
链接地址:http://scyanting.com/article/hdgedd.html