您的位置:首页 > 其它

辗转相除法求最大公约数

2012-02-15 21:42 661 查看
辗转相除法百度百科解释:

两个整数的最大公约数是能够同时整除它们的最大的正整数。辗转相除法基于如下原理:两个整数的最大公约数等于其中较小的数和两数的差的最大公约数。例如,252和105的最大公约数是21(252 = 21 × 12;105 = 21 × 5);因为252 − 105 = 147,所以147和105的最大公约数也是21。在这个过程中,较大的数缩小了,所以继续进行同样的计算可以不断缩小这两个数直至其中一个变成零。这时,所剩下的还没有变成零的数就是两数的最大公约数

辗转相除法有很多应用,它甚至可以用来生成全世界不同文化中的传统音乐节奏。在现代密码学方面,它是RSA算法(一种在电子商务中广泛使用的公钥加密算法)的重要部分。它还被用来解丢番图方程,寻找满足中国剩余定理的数,或者求有限域倒数。辗转相除法还可以用来构造连分数,在施图姆定理和一些整数分解算法中也有应用。辗转相除法是现代数论中的基本工具。

 辗转相除法处理大数时非常高效,它需要的步骤不会超过较小数的位数(十进制下)的五倍。加百利·拉梅(Gabriel Lamé)于1844年证明了这点,开创了计算复杂性理论

public class Gongyueshu
{
//辗转相除法
/*比如35、30,30和35的最大公约数为5。
因为5=35-30,所以5与30的最大公约数为5,一相减,数的范围就缩小了,
不断做这样的操作,直到其中的某一个数为0,那么剩下的那个不等于0的数就是两个数的最大公约数*/
public static void main(String args[])
{
i=30;j=35;
if(i==j)
{
System.out.println("最大公约数为:"+i);
return;
}
else
{
while(i==0||j==0)
{
if(i>j)
{
i-=j;
}
else
{
j-=i;
}
int result=i>j?i:j;
System.out.println("两个数的最大公约数为:"+result);
return;
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: