package gcd;
import java.math.BigInteger;
import java.util.*;
public class stein_gcd{
public static BigInteger gcdBinary(BigInteger u,BigInteger v){
u=(u.compareTo(BigInteger.ZERO)<0)?u.negate():u;
v=(v.compareTo(BigInteger.ZERO)<0)?v.negate():v;
BigInteger b_2 = new BigInteger("2");
//System.out.println("u="+u+",v="+v+" ?="+b_2);
while(true){
if(u.compareTo(BigInteger.ZERO)==0 && v.compareTo(BigInteger.ZERO)!=0){
return v;
}
else if(u.compareTo(BigInteger.ZERO)!=0 && v.compareTo(BigInteger.ZERO)==0){
return u;
}
else if(u.remainder(b_2)==BigInteger.ZERO && v.remainder(b_2)==BigInteger.ZERO){
return b_2.multiply(gcdBinary(u.divide(b_2),v.divide(b_2)));
}
else if(u.remainder(b_2)!=BigInteger.ZERO && v.remainder(b_2)==BigInteger.ZERO){
return (gcdBinary(u,v.divide(b_2)));
}
else if(u.remainder(b_2)==BigInteger.ZERO && v.remainder(b_2)!=BigInteger.ZERO){
return (gcdBinary(u.divide(b_2),v));
}
else if(u.remainder(b_2)!=BigInteger.ZERO && v.remainder(b_2)!=BigInteger.ZERO
&& u.compareTo(v)>=0){
return gcdBinary((u.subtract(v)).divide(b_2),v);
}
else if(u.remainder(b_2)!=BigInteger.ZERO && v.remainder(b_2)!=BigInteger.ZERO
&& u.compareTo(v)<=0){
return gcdBinary(u,(v.subtract(u)).divide(b_2));
}
}
}
public static void print(BigInteger m,BigInteger n,BigInteger gcd){
System.out.format("gcd of \n%d \nand \n%d\n is: %d\n",m,n,gcd);
}
public static void main(String[] args) {
/**Random random = new Random();
int ran = 0;
String str1="",str2="";
for(int i=0;i<10;i++){
ran = random.nextInt(10);
str1 += ran+"";
ran = random.nextInt(10);
str2 += ran+"";
}
BigInteger m = new BigInteger(str1);
BigInteger n = new BigInteger(str2);*/
BigInteger m = new BigInteger("1234567890987654321234567890987654321234");
BigInteger n = new BigInteger("5678909876543212345678909876543212345678");
long t1=System.currentTimeMillis();
//print(m,n,gcdBinary(m,n));
System.out.println(gcdBinary(m,n));
BigInteger g = gcdBinary(m,n);
long t2=System.currentTimeMillis();
System.out.println("\ntime used��");
System.out.println(((double)(t2-t1))/1000);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
GCD大整数.rar_K8YT_gcd_hurtuwe_stein
共6个文件
java:1个
prefs:1个
class:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 68 浏览量
2022-09-24
23:03:04
上传
评论
收藏 4KB RAR 举报
温馨提示
基于Java和Python语言实现了大整数stein's gcd算法,解决欧几里得算法不足
资源推荐
资源详情
资源评论
收起资源包目录
GCD大整数.rar (6个子文件)
GCD大整数
stein_gcd.py 847B
stein_gcd_java
bin
gcd
stein_gcd.class 2KB
.settings
org.eclipse.jdt.core.prefs 598B
src
gcd
stein_gcd.java 2KB
.project 379B
.classpath 301B
共 6 条
- 1
资源评论
我虽横行却不霸道
- 粉丝: 95
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功