JAVA提取公因数
Posted 算法与编程之美
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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具体实验,证明该方法是有效的,当然本文在处理生成随机数表之类的问题还未解决,未来会逐渐探究该问题并解决问题。
以上是关于JAVA提取公因数的主要内容,如果未能解决你的问题,请参考以下文章