Java BigInteger求任意n(n∈N*)次方根的实现
来源:互联网 发布:租房php源码 编辑:程序博客网 时间:2024/05/26 17:49
原理是newton切线法,就不用介绍了吧
package com.swu.math;import java.math.BigDecimal;import java.math.BigInteger;public class Test{//num是被开方数,n是开方次数,precision设置保留几位小数public static String rootN_Decimal(String num,int n,int precision){BigDecimal x=new BigDecimal(new BigInteger(num).divide(new BigInteger(n+"")));BigDecimal x0=BigDecimal.ZERO;BigDecimal e=new BigDecimal("0.1");for(int i=1;i<precision;++i)e=e.divide(BigDecimal.TEN,i+1,BigDecimal.ROUND_HALF_EVEN);BigDecimal K=new BigDecimal(num);BigDecimal m=new BigDecimal(n);long i=0;while(x.subtract(x0).abs().compareTo(e)>0){x0=x;x=x.add(K.subtract(x.pow(n)).divide(m.multiply(x.pow(n-1)),precision,BigDecimal.ROUND_HALF_EVEN));++i;}return x+" "+i;}public static void main(String[] args){BigInteger b=new BigInteger("123456789123456789123456789");b=b.pow(10);System.out.println(rootN_Decimal(b.toString(), 10, 2));}}
运行结果
123456789123456789123456789.00 5117
- Java BigInteger求任意n(n∈N*)次方根的实现
- BigDecimal的n次方根的实现
- 利用牛顿迭代法 求n次方根
- 再一次的无聊——求BigDecimal的n次方根的实现
- SICP 1.45 n次方根
- matlab nthroot函数 求n次方根
- 一种用自然对数开n次方根的方法
- 牛顿迭代法开N次方根
- 使用牛顿迭代法求解n次方根
- python中开n次方根
- matlab 矩阵开n次方根
- 求N的N次幂的最高位
- 求N的N次的最高位
- 求x的n次幂算法Pow(x, n)
- 求任意整数n的阶乘
- 求x的n次幂
- 求四的N次幂
- 2的n次幂的Java实现
- iOS程序内进入 App Store 打分的代码
- NYOJ,6,喷水装置(一)
- linux删除软件
- HTML-embed标签详解
- ADD a new USERID in mainframe system
- Java BigInteger求任意n(n∈N*)次方根的实现
- Uva10245-The Closest Pair Problem
- GSL随机数获取
- Uva11572-Unique Snowflakes
- linux内核sk_buff的结构分析
- iPhone应用程序编程指南(事件处理)
- 有点意思的C/C++问题及解答:6-10
- Unix/Linux历史
- hdu 题目2952 Counting Sheep (DFS)