JAVA提取公因数

简介: JAVA提取公因数

1 问题

如何使用java输入两个正整数,并输出他们的最大公因数。


2 方法

Euclid规则:如果x和y是正整数,且有x>=y,那么gcd(x,y)=gcd(x mod y,y)。递归实现实现需在a,b为奇数时实现

当a,b为任意正整数时,可用如下方式结合然后加以实现算法思想:

当a,b都是偶数时,gcd(a,b)=2*gcd(a/2,b/2);

当a是奇数,b是偶数时,gcd(a,b)=gcd(a,b/2);

当a是偶数,b是奇数时,gcd(a,b)=gcd(a/2,b);

当a,b都是奇数时,gcd(a,b)=gcd((a-b)/2,b).

int gcd(int a,int b)
{
if(a<b)
{
swap(a,b);
}
if(b==0)
{
return a;
}
return gcd(b,a%b);
}
int gcd2(int a,int b)
{
int ans=1;
while(a%2!=0&&b%2!=0)
{
a = a/2;
b = b/2;
ans=ans*2;
}
while(a != b)
{
if(a>b)
{
a = a-b;
}else
{
b = b-a;
}
}
return ans*a;
}
int gcd2(int a,int b)
{
int ans=1;
while(a%2!=0&&b%2!=0)
{
a = a/2;
b = b/2;
ans=ans*2;
}
a=gcd2_2(a,b);
return ans*a;
}


3 结语

我们通过讨论学习“如何在java生成随机数”,提出辗转相除法方法,通过在idea具体实验,证明该方法是有效的,当然本文在处理生成随机数表之类的问题还未解决,未来会逐渐探究该问题并解决问题。

目录
相关文章
|
8月前
|
Java
【Java】生成条形码工具类
【Java】生成条形码工具类
100 0
java8 streamlist转化
java8 streamlist转化
|
索引
java202303java学习笔记第四十三天函数-索引-分类2
java202303java学习笔记第四十三天函数-索引-分类2
75 0
|
索引
java202303java学习笔记第四十三天函数-索引-分类1
java202303java学习笔记第四十三天函数-索引-分类1
59 0
java202303java学习笔记第四十三天函数-结构-介绍
java202303java学习笔记第四十三天函数-结构-介绍
65 0
java202302java学习笔记第十四天-身份证信息查看
java202302java学习笔记第十四天-身份证信息查看
50 0
java202302java学习笔记第十四天-身份证信息查看
java202302java学习笔记第十一天-方法的练习3判断数据是否存在
java202302java学习笔记第十一天-方法的练习3判断数据是否存在
81 0
java202302java学习笔记第十一天-方法的练习3判断数据是否存在
|
Java 数据库
Java中的如何检测字符串是否相等
使用equals方法检测两个字符串是否相等。
269 0
Java中的如何检测字符串是否相等
HelloServlet.java内容如下
HelloServlet.java内容如下
55 0
|
Java Maven 内存技术
java 视频提取音频 | Java工具类
java 视频提取音频 | Java工具类
java 视频提取音频 | Java工具类