以前用c求斐波那契数,如果要求第n位时,n是个比较大的数,long类型无法存储,发生越界.
自己写算法又比较难,但是java提供了BigInteger这个类,这样就可以避免越界了,相信底层也是很难的算法,一提到算法就有点恐惧.
代码如下:
import java.io.*;
import java.math.*;
public class Fibonacci
{
public static void main(String[] args)
{
long start=System.currentTimeMillis();
System.out.println("查找第几个斐波那契额数::");
int number=1;
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
try{
number=Integer.parseInt(br.readLine());
}catch(Exception e){
e.printStackTrace();
}
long end=System.currentTimeMillis();
System.out.println("结果:"+fibonacci(number));
System.out.println("花费:"+(end-start)+"ms");
}
public static BigInteger fibonacci(int n)
{
BigInteger f1=new BigInteger("1");
BigInteger f2=new BigInteger("1");
BigInteger result=new BigInteger("1");
if(n==1||n==2)
{
return f1;
}
else
{
for(int i=3;i<=n;i++)
{
result=f1.add(f2);
f1=f2;
f2=result;
}
return result;
}
}
}
结果:
- 大小: 148.2 KB
分享到:
相关推荐
ipv6的ip地址转biginteger数字 直接能够测试
正如我们在 Java 中处理大数运算时,需要使用 BigInteger 类来实现,这是因为 Java 的基本数据类型无法存储非常大的数字。BigInteger 类提供了几个重要的方法来进行大数运算,包括加、减、乘、除和取余等。 在了解 ...
1. **创建实例**:可以通过`BigInteger.Parse`或`BigInteger.TryParse`将字符串转换为`BigInteger`,也可以通过`BigInteger`的构造函数传入整数数组来创建大整数。 2. **基本运算**:`BigInteger`提供了`Add`, `...
在Java中,我们可以使用`java.math.BigInteger`类来处理大整数,这在实现RSA算法时非常关键,因为加密过程中涉及的数字通常超过了普通整型变量的范围。以下是关于`BigInteger`类以及如何在Java中实现RSA加解密的详细...
15. **BigInteger negate()**:返回当前 `BigInteger` 的相反数。 16. **BigInteger not()**:返回当前 `BigInteger` 的按位非结果。 17. **BigInteger or(BigInteger val)**:返回两个 `BigInteger` 按位或的结果。...
BigInteger 包 BigInteger 包是 Java 语言中用于处理大整数的类库。该类库提供了多种构造方法和运算方法来处理大整数。 构造方法 BigInteger 类提供了多种构造方法来创建 BigInteger 对象。这些方法包括: * `...
标题中的"BigInteger, JS插件脚本"指出我们要讨论的是JavaScript中处理大整数的库——BigInteger。在JavaScript原生环境中,Number类型只能精确表示到2^53 - 1,超过这个范围的大整数可能会导致精度丢失。BigInteger...
用java写的BigInteger,主要是实现一个内库
总结来说,"BigInteger_src.zip"提供了一个在C#环境中使用BigInteger类实现RSA加解密的实例。通过学习和理解BigInteger.cs中的代码逻辑,以及参考BigIntegerDoc.html中的文档,开发者可以深入掌握RSA算法的实现细节...
在标题"C#的BigInteger"中,我们主要关注的是如何在C#编程环境中使用这个大整数类。`BigInteger`类是通过命名空间`System.Numerics`引入的,所以首先我们需要导入这个命名空间: ```csharp using System.Numerics; ...
BigInteger 结构提供了多种构造函数,例如使用字节数组、Decimal 值、双精度浮点值、32 位带符号整数值、64 位带符号整数值、单精度浮点值、32 位无符号整数值和 64 位无符号整数值来初始化 BigInteger 对象。...
可以使用辗转相除法(欧几里得算法)或更高级的扩展欧几里得算法来求GCD。 3. **基本运算**:分数类需要提供加、减、乘、除的方法。这些操作涉及到两个BigInteger对象的运算,注意需要在每次运算后简化结果。 4. *...
JavaScript支持大整数,页面需要进入BigInteger.js。才能使用
Java的BigInteger使用了舍入除法算法,如长除法,这在C++中可能也是类似的方法。长除法涉及多次减法和除法的迭代,效率较低。为了提高效率,可以研究更高级的算法,如Newton-Raphson除法或者基于位操作的优化策略。 ...
5. 求余数操作:使用remainder()方法可以进行求余数操作,例如:BigInteger a = new BigInteger("10"); BigInteger b = new BigInteger("3"); BigInteger c = a.remainder(b); 在给定的文件中,我们可以看到使用...
它支持各种数学运算,如加法、减法、乘法、除法、求幂等,并且提供了比较操作符来比较两个`BigInteger`对象的大小。例如: ```java BigInteger a = new BigInteger("100"); BigInteger b = new BigInteger("200"); ...
在编程领域,大整数(BigInteger)处理是计算科学中不可或缺的一部分,特别是在处理超过普通整型数据类型范围的数值时。`BigInteger`类通常在Java...理解和熟练使用`BigInteger`对于编写需要处理大数值的程序至关重要。
BigInteger类的构造方法有多种,例如使用字符串构造BigInteger对象,使用byte数组构造BigInteger对象等。例如,使用字符串构造BigInteger对象的构造方法如下: ```java public BigInteger(String val) ``` 3. ...
这时,我们可以借鉴Java中的`BigInteger`类,通过引入第三方库来实现OC中的大数存储和计算功能。 `BigInteger`是一种能够处理任意大小整数的类,它不受平台或编程语言内置数据类型的限制,可以进行高效且精确的大数...