iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >java中怎么求一个正整数的平方根
  • 551
分享到

java中怎么求一个正整数的平方根

2023-06-19 09:06:46 551人浏览 八月长安
摘要

这篇文章给大家介绍java中怎么求一个正整数的平方根,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、二分法二分法的思想很简单,就是从0到N不断的去缩小范围来找一个一个满足精度的最佳值。我们举一个函数的例子:这就是二分

这篇文章给大家介绍java中怎么求一个正整数的平方根,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

一、二分法

二分法的思想很简单,就是从0到N不断的去缩小范围来找一个一个满足精度的最佳值。我们举一个函数的例子:

java中怎么求一个正整数的平方根

这就是二分法的思想,求平方根也是,我们从0到value取出中间值,然后不断地比较,假设value=10,查找区间为(0,10),这时候取(0,10)的中间值mid=5,mid*mid再和value比较之后,确定下一次查找的区间变为(0,5),依次类推。一直到满足我们需要的精度即可。下面我们使用java代码实现一下:

    static double MySqrt(int value, double t){
        if (value < 0 || t<0)
            return 0;
        double left = 0;
        double right = value;
        double mid = (right + left) / 2;
        double offset = 2*t ;
        while (offset>t){
            double temp = mid*mid;
            if (temp > value){
                right = (left + right) / 2;
                offset = temp - value;
            }
            if (temp <= value){
                left = (left + right) / 2;
                offset = value - temp;
            }
            mid = (left + right) / 2;
        }
        return mid;
    }
 

在这里value就是我们要求的数字,t表示的是精度。这个方法在这,大家可以测试一遍。不过在这里有一个小小的问题需要我们去注意:

如果我们对整数9取平方根,结果不是3,这里有精度损失,损失的原因之一是和计算机有关的,因为计算机的底层其实只有0和1,所以会无限的接近,而不能精确表示。

以上就是二分法求解的思想,这个思想很简单,不过实现的方法却是有一点点麻烦。在这里我们开始介绍第二种方法,那就是牛顿的微积分思想

 

二、牛顿迭代法

牛顿的微积分的思想就是无限接近,在这里提一句,如果你是数学大佬就不要追究思想到底是啥了。对于求平方根来说,使用切线来无限逼近的方式有时候能起到意想不到的效果。

设r是f(x) = 0的根,选取x0作为r初始近似值,过点(x0,f(x0))做曲线y = f(x)的切线L,

L的方程为y = f(x0)+f'(x0)(x-x0),求出L与x轴交点的横坐标 x1 = x0-f(x0)/f'(x0),称x1为r的一次近似值。

过点(x1,f(x1))做曲线y = f(x)的切线,并求该切线与x轴交点的横坐标 x2 = x1-f(x1)/f'(x1),称x2为r的二次近似值。

重复以上过程,得r的近似值序列,其中x(n+1)=x(n)-f(x(n))/f'(x(n)),称为r的n+1次近似值,上式称为牛顿迭代公式。

我们使用一张图来演示一下:

java中怎么求一个正整数的平方根

这种方式也很好理解。所以我们直接来看实现:

static double SqrtIterator(int value,double t){
    double temp = value;
    while (fabs(temp*temp-value)>t){
        temp=(temp+value/temp) / 2.0;
    }
    return temp;
}
//取绝对值
private static double fabs(double a) {
    return (a < 0) ? -a : a;
}

关于java中怎么求一个正整数的平方根就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: java中怎么求一个正整数的平方根

本文链接: https://www.lsjlt.com/news/295283.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • java中怎么求一个正整数的平方根
    这篇文章给大家介绍java中怎么求一个正整数的平方根,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、二分法二分法的思想很简单,就是从0到N不断的去缩小范围来找一个一个满足精度的最佳值。我们举一个函数的例子:这就是二分...
    99+
    2023-06-19
  • Python中求数字的平方根和平方的几种
    方法一: 使用内置模块 >>> import math >>> math.pow(12, 2) # 求平方 144.0 >>> math.sqrt(144) #...
    99+
    2023-01-31
    平方根 几种 中求
  • c语言求平方根函数怎么写
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-15
  • java求输入一个正整数,计算并输出整数的各位数字之和
    输入一个正整数,计算并输出整数的各位数字之和。 如输入12345,结果显示15,如下图所示。 【代码如下】: import java.util.Scanner;public class NumSum{ public static vo...
    99+
    2023-10-04
    java
  • 怎么用JavaScript算出一个正整数的因数
    本篇内容介绍了“怎么用JavaScript算出一个正整数的因数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成...
    99+
    2024-04-02
  • C语言怎么求两个正整数的最大公约数
    这篇文章主要介绍“C语言怎么求两个正整数的最大公约数”,在日常操作中,相信很多人在C语言怎么求两个正整数的最大公约数问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言怎么求两个正整数的最大公约数”的疑惑有所...
    99+
    2023-06-25
  • JavaScript怎么求一个数的次方
    在JavaScript中,如果需要求一个数的次方,可以使用Math对象的pow()方法。Math.pow()方法接受两个参数,第一个参数是底数,第二个参数是指数。它会返回底数的指定次幂。下面是一个例子:let x = 2; let y = ...
    99+
    2023-05-14
  • javascript基于牛顿迭代法怎么实现求浮点数的平方根
    这篇文章主要介绍javascript基于牛顿迭代法怎么实现求浮点数的平方根,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!首先是牛顿迭代法原理:比如我们要求a的平方根,首先随便猜一个近...
    99+
    2024-04-02
  • c语言怎么输入一个数的平方
    要计算 c 语言中输入的数的平方,步骤如下:包含必要头文件:#include 声明整数变量 num。提示用户输入整数并使用 scanf 函数读取。计算 num 的平方并将其存储在 int...
    99+
    2024-05-13
    c语言
  • 使用Python怎么求数字的平方
    今天就跟大家聊聊有关使用Python怎么求数字的平方,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性和面向对...
    99+
    2023-06-08
  • 使用python怎么求三个数的平均值
    本篇文章给大家分享的是有关使用python怎么求三个数的平均值,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。python有哪些常用库python常用的库:1.requesuts...
    99+
    2023-06-14
  • 怎么在Java中发起一个http请求
    这期内容当中小编将会给大家带来有关怎么在Java中发起一个http请求,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、GET与POSTGET和POST是HTTP的两个常用方法。GET指从指定的服务器中获...
    99+
    2023-06-14
  • c语言怎么求一个区间中素数个数
    要求一个区间中素数的个数,可以使用以下的方法:1. 编写一个函数`isPrime()`来判断一个数是否为素数。该函数接受一个参数n,...
    99+
    2023-10-12
    c语言
  • php怎么求一个数组的和
    可以使用 array_sum() 函数来求一个数组的和。示例代码如下:```php```以上代码中,首先定义了一个数组 $array...
    99+
    2023-08-29
    php
  • Java中的正整数怎么利用正则表达式进行验证
    Java中的正整数怎么利用正则表达式进行验证?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。具体如下:package des;import java.util.regex.M...
    99+
    2023-05-31
    java 正则表达式 ava
  • 使用java怎么求一个圆的面积
    这期内容当中小编将会给大家带来有关使用java怎么求一个圆的面积,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发;3. 客...
    99+
    2023-06-14
  • C#中怎么定义一个整型数组
    这篇文章给大家介绍C#中怎么定义一个整型数组,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。C#中数组是引用类型,C#定义整型数组方式是:int [] intArray = {1,2,3};或int [] intArra...
    99+
    2023-06-18
  • C#中怎么实现一个取整函数
    本篇文章为大家展示了C#中怎么实现一个取整函数,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。C#取整函数使用实例:Math.Round是"就近舍入",当要舍入的是5时与"...
    99+
    2023-06-17
  • Python中怎么求列表list的平均数
    这篇文章给大家分享的是有关Python中怎么求列表list的平均数的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。python主要应用领域有哪些1、云计算,典型应用OpenStack。2、WEB前端开发,众多大型网...
    99+
    2023-06-14
  • c语言怎么求两个整数的最大值
    可以使用条件判断语句来求两个整数的最大值,具体代码如下:```c#include int main() {int num1, num...
    99+
    2023-10-10
    c语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作