平方根

【数学】C020_x的平方根(暴力枚举 | 二分查找 | 牛顿迭代)

 ̄綄美尐妖づ 提交于 2020-01-19 00:55:24
一、题目描述 实现 int sqrt ( int x ) 函数。 计算并返回 x 的平方根,其中 x 是非负整数。 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。 输入 : 8 输出 : 2 说明 : 8 的平方根是 2.82842 . . . ,由于返回类型是整数,小数部分将被舍去。 二、题解 (1) 枚举 /** * 枚举: * 执行用时 32ms 击败了 5.8% 的java用户 * 内存消耗 MB 击败了 % 的java用户 * @param x * @return */ public int mySqrt1 ( int x ) { if ( x < 1 ) return 0 ; // 任何一个数的平方根都小于等于它的二分之一加一 for ( long i = 0 ; i <= ( x >>> 1 ) + 1 ; i ++ ) { if ( i * i <= x && ( i + 1 ) * ( i + 1 ) > x ) return ( int ) i ; } return - 1 ; } 复杂度分析 时间复杂度: 空间复杂度: (2) 二分查找 /** * 二分查找: * * 执行用时 ms 击败了 % 的java用户 * 内存消耗 MB 击败了 % 的java用户 * @param x * @return */ public int mySqrt (

JS中内置对象Math和Number的一些方法

痞子三分冷 提交于 2020-01-10 07:23:45
Math内置对象 1, 求num平方根: Math.sqrt(num); (square root: 平方根) 2, num的n次方: Math.pow(num, n); (power: 幂) Number内置对象 1, 可表示的最大数: Number.MAX_VALUE; 2, 可表示的最小数: Number.MIN_VALUE; 来源: CSDN 作者: jiuyehengxia 链接: https://blog.csdn.net/jiuyehengxia/article/details/103915291

Leetcode204. 计数质数

 ̄綄美尐妖づ 提交于 2020-01-10 05:39:18
Leetcode204. 计数质数 题目: 统计所有小于非负整数 n 的质数的数量。 示例: 输入: 10 输出: 4 解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。 题解: 质数是因子为1和本身, 如果数c不是质数,则还有其他因子,其中的因子,假如为a,b.其中必有一个大于 s q r t ( c ) sqrt(c) s q r t ( c ) ,一个小于 s q r t ( c ) sqrt(c) s q r t ( c ) 。所以 c c c 必有一个小于或等于其平方根的因数,那么验证素数时就只需要验证到其平方根就可以了。即一个合数一定含有小于它平方根的质因子。 方法一:循环遍历 方法二:厄拉多塞筛法 如果一个数是质数,那么这个数的倍数一定不是质数。 比如,2是质数,那么4,6,8,10…一定不是质数。 scala代码如下: def countPrimes ( n : Int ) : Int = { var count = 0 for ( i < - 2 to n ) { if ( isPrime ( i ) ) { count = count + 1 } } count } def isPrime ( n : Int ) : Boolean = { var flag = true //向上取整 val s = Math . ceil (

PTA 7-10 迭代法求正数的平方根 (10分)

感情迁移 提交于 2020-01-07 22:56:44
利用迭代法求正数的平方根。x0=a/2; 输入格式: 要求,在一行输入实数a(a>0)和eps(eps>0)。 输出格式: 输出平方根,保留4位小数及迭代次数。 输入样例: 在这里给出一组输入。例如: 7.8 0.01 输出样例: 在这里给出相应的输出。例如: 2.7949 3 作者: 李志聪 单位: 哈尔滨师范大学 时间限制: 400 ms 内存限制: 64 MB 代码长度限制: 16 KB 1 import java.util.Scanner; 2 public class Main { 3 public static void main(String[] args) { 4 Scanner sc=new Scanner(System.in); 5 double a=sc.nextDouble(); 6 double eps=sc.nextDouble(); 7 int sum=1; 8 double temp=a/2,item; 9 item=0.5*temp+0.5*(a/temp); 10 while(Math.abs(item-temp)>=eps) { 11 temp=item; 12 item=0.5*temp+0.5*(a/temp); 13 sum++; 14 } 15 double k; 16 k=item*0.5+temp*0.5; 17 System

LeetCode-69. x 的平方根

爱⌒轻易说出口 提交于 2019-12-27 10:21:21
实现 int sqrt(int x) 函数。 计算并返回 x 的平方根,其中 x 是非负整数。 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。 示例 1: 输入: 4 输出: 2 示例 2: 输入: 8 输出: 2 说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。 参考题解: https://leetcode-cn.com/problems/sqrtx/solution/er-fen-cha-zhao-niu-dun-fa-python-dai-ma-by-liweiw/ #include <iostream> #include <stdio.h> using namespace std; class Solution { public: int mySqrt(int x) { switch(x){ case 0: return 0; case 1: return 1; case 2: return 1; case 3: return 1; default: break; } long low = 0; long high = x/2+1; long mid; while(low<high){ mid = low + 1 + (high - low )/2; long sqrtVal = mid * mid; if(sqrtVal

牛顿法算平方根的理解

余生长醉 提交于 2019-12-23 21:50:53
原题目: x 的平方根 查看题解,使用到了牛顿法。 公式: 作者已经讲得很清楚了,只是看这里的公式中的 x x x 和 x 0 x_0 x 0 ​ 的时候卡了一下,后来理解了,其实 x 0 x_0 x 0 ​ 就是进行尝试的起始点,然后进行图中的迭代公示后得到的 x 0 x_0 x 0 ​ (其实就是所求的 x x x )是下一次的起始点,在图中就是那条斜线与 x x x 轴的焦点的位置。那么,如果一个值的平方考虑到可能会溢出的话,如何避免计算平方值呢?代码中写的很清楚的了,因为牛顿法考的是一次次的迭代靠近真实值,那么这样的每次迭代的进步空间聚会越来越小。最后只要要求两次的差值小于某个固定的很小的数就可以了。 在这里插入代码片 class Solution : def mySqrt ( self , x ) : if x < 0 : raise Exception ( '不能输入负数' ) if x == 0 : return 0 # 起始的时候在 1 ,这可以比较随意设置 cur = 1 while True : pre = cur cur = ( cur + x / cur ) / 2 if abs ( cur - pre ) < 1e - 6 : return int ( cur ) 来源: CSDN 作者: CTTACM 链接: https://blog.csdn.net

leetcode--69. x 的平方根

女生的网名这么多〃 提交于 2019-12-08 06:47:27
题目:69. x 的平方根 链接: https://leetcode-cn.com/problems/sqrtx/ 实现 int sqrt(int x) 函数。 计算并返回 x 的平方根,其中 x 是非负整数。 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。 示例 1: 输入: 4 输出: 2 示例 2: 输入: 8 输出: 2 说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。 我第一反应就是二分啊,不知这样算不算。二分区间【1,k】,如果中点值的平方大于k,取下半区间,否则取上半区间,继续二分,直到区间端点值相差一。 python: class Solution(object): def mySqrt(self, x): """ :type x: int :rtype: int """ if x==0 or x==1: return x low=1 high=x while high-low>1: mid=(low+high)//2 if mid*mid>x: high=mid else: low=mid return low 来源: CSDN 作者: 我是NeroZhang 链接: https://blog.csdn.net/Hilavergil/article/details/83150361

【Python】 平方根

送分小仙女□ 提交于 2019-12-07 18:57:18
平方根,又叫二次方根,表示为〔√ ̄〕,如:数学语言为:√ ̄16=4。语言描述为:根号下16=4。 以下实例为通过用户输入一个数字,并计算这个数字的平方根: num = float(input('请输入一个数字: ')) num_sqrt = num ** 0.5 print(' %0.3f 的平方根为 %0.3f'%(num ,num_sqrt)) 执行以上代码输出结果为: 请输入一个数字: 4 4.000 的平方根为 2.000 在该实例中,我们通过用户输入一个数字,并使用指数运算符 ** 来计算该数的平方根。 该程序只适用于正数。负数和复数可以使用以下的方式: # 计算实数和复数平方根 # 导入复数数学模块 import cmath num = int(input("请输入一个数字: ")) num_sqrt = cmath.sqrt(num) print('{0} 的平方根为 {1:0.3f}+{2:0.3f}j'.format(num ,num_sqrt.real,num_sqrt.imag)) 执行以上代码输出结果为: 请输入一个数字: -8 -8 的平方根为 0.000+2.828j 该实例中,我们使用了 cmath (complex math) 模块的 sqrt() 方法。 来源: https://www.cnblogs.com/HGNET/p/12002946

例4 求平方根

扶醉桌前 提交于 2019-12-03 21:31:59
#sqrt(3)=1; sqrt(4)=2; sqrt(5)=2; sqrt(10)=3 class Solution: def sqrt(self, x): l, r = 0, x while l + 1 < r: m = (r + l) // 2 if m * m == x: return m elif m * m > x: r = m else: l = m if l * l == x: return l if r * r == x: return r return l if __name__ == '__main__': temp = Solution() x1 = 5 x2 = 10 print(("输入:" + str(x1))) print(("输出:" + str(temp.sqrt(x1)))) print(("输入:" + str(x2))) print(("输出:" + str(temp.sqrt(x2)))) 结果如下: 输入:5 输出:2 输入:10 输出:3 来源: https://www.cnblogs.com/hankleo/p/11809675.html

NumPy笔记:运算符(exp,sqrt,square)

匿名 (未验证) 提交于 2019-12-03 00:02:01
""" 运算符(exp,sqrt,square) """ import numpy as np print("--------------exp,sqrt,square----------------") a = np.array([1, 4, 9]) print("指数:", np.exp(a)) print("平方根:", np.sqrt(a)) print("平方:", np.square(a)) --------------exp,sqrt,square---------------- 指数: [2.71828183e+00 5.45981500e+01 8.10308393e+03] 平方根: [1. 2. 3.] 平方: [ 1 16 81] 来源:博客园 作者: Jumpkin1122 链接:https://www.cnblogs.com/jumpkin1122/p/11503578.html