首页 > 学院 > 开发设计 > 正文

欧几里得算法

2019-11-06 08:06:00
字体:
来源:转载
供稿:网友

问题:给定两个正整数m,n,求他们的最大公因数。

算法:1)判断m,n的大小。如果m小于n,则交换m和n的值,确保m大于等于n。

2)以n除m,并令r为m除n所得的余数。若r等于0,则n为最大公因子,算法结束。

3)若r不等于0,则将n值赋值给m,将r值赋值给n,重复算法3。

[java] view plain copyint Euclid(int m,int n){      if(m<n){          int temp=m;          m=n;          n=temp;      }                                 //如果m小于n,则交换m和n的值。      int r=m%n;      while(r){          m=n;          n=r;          r=m%n;      }                               //步骤2和3      return n;  }  反思:假设m=5,n=7;若没有步骤1,则n除m的余数为5,即r=5,随后执行while循环时则会出现m=7,n=5;即执行了步骤1。也就是说步骤1不存在也可以达到目的,而步骤1的存在仅仅为了提高程序的运行效率。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表