import java.math.BigInteger; public class BigNumber { public static void main(String[] args) { BigInteger a=new BigInteger("1"); BigInteger b=new BigInteger("1"); BigInteger[] fib=new BigInteger[2030]; fib[1]=a; fib[2]=b; for(int x=3;x<fib.length;x++) { fib[x]=fib[x-1].add(fib[x-2]); } a=fib[2020]; b=fib[520]; BigInteger temp; while(b!=BigInteger.ZERO) { temp=a.mod(b); a=b; b=temp; } System.out.println(a); } } 改为使用迭代方法的Java代码
时间: 2024-03-11 17:51:26 浏览: 84
以下是使用迭代方法实现的Java代码:
```
import java.math.BigInteger;
public class BigNumber {
public static void main(String[] args) {
BigInteger a = new BigInteger("1");
BigInteger b = new BigInteger("1");
BigInteger[] fib = new BigInteger[2030];
fib[1] = a;
fib[2] = b;
for (int x = 3; x < fib.length; x++) {
fib[x] = fib[x - 1].add(fib[x - 2]);
}
a = fib[2020];
b = fib[520];
BigInteger temp;
while (!b.equals(BigInteger.ZERO)) {
temp = a.mod(b);
a = b;
b = temp;
}
System.out.println(a);
}
}
```
这段代码与原始代码的区别在于,原来使用了递归方法来计算最大公约数,而现在改为使用迭代方法。
相关问题
在javahome项目中 完成素数的多线程判定。功能如下: 1、输入10个大数(超过12位的整数) 2、为每个大数启动一个线程实现素数判断
好的,实现素数的多线程判定可以按照以下步骤进行:
1. 定义一个线程类,用于对每个大数进行素数判断。
```java
public class PrimeNumberThread extends Thread {
private final BigInteger number;
public PrimeNumberThread(BigInteger number) {
this.number = number;
}
@Override
public void run() {
boolean isPrime = isPrimeNumber(number);
System.out.println(number + " is " + (isPrime ? "" : "not ") + "a prime number.");
}
// 判断一个数是否是素数
private boolean isPrimeNumber(BigInteger n) {
if (n.compareTo(BigInteger.valueOf(2)) < 0) {
return false;
}
long sqrt = (long) Math.sqrt(n.doubleValue());
for (long i = 2; i <= sqrt; i++) {
if (n.mod(BigInteger.valueOf(i)).equals(BigInteger.ZERO)) {
return false;
}
}
return true;
}
}
```
2. 在主函数中输入10个大数,并为每个大数启动一个线程。
```java
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
BigInteger[] numbers = new BigInteger[10];
for (int i = 0; i < 10; i++) {
System.out.print("Please enter a big integer: ");
numbers[i] = scanner.nextBigInteger();
PrimeNumberThread thread = new PrimeNumberThread(numbers[i]);
thread.start();
}
}
```
这样就完成了素数的多线程判定。每个大数都会启动一个线程进行素数判断,可以提高效率。
阅读全文