至东汉出现的《九章算术》。它并不需要把二数作质因子分解。 看到过许多欧几里德算法的实现,但是下面即将给出的这个算法是个人感觉最好的一个实现。 //注意:这里不用考虑m和n的大小问题。 int euclid(int m, int n) { int r; do{ r = m % n; m = n; n = r; } while(r!=0); return m; } 分析 ①算法中不必考虑m与n的大小问题。当m<n时,第一次while循环将使m和n的值进行互换,以使m>n。 例如:当m=4 n=10时,r = m%n = 4%10 = 4; m = n = 10; n = r = 4;(完成互换) ②当=120 n=90时: r = m%n = 120%90 = 30; m = n = 90; n = r = 30; r = m%n = 90%30 = 0; m = n = 30; n = r = 0;(r等于0,返回m的值30) ③利用欧几里德算法,求出两个正整数的最大公因子后,即可轻松获得这两个正整数的最小公倍数: 最小公倍数 = (正整数1 * 正整数2) / 最大公因子 3.线性表 Collection (所有集合类的接口) List、Set都继承自Collection接口,查看JDK API,操作集合常用的方法大部分在该接口中定义了。 List,Set接口也有很多方法,可以查看文档。 List:有序可重复 遍历时删除问题 使用增强for循环遍历List(所有实现子类ArrayList,Stack等)元素对其中元素进行删除,会抛出java.util.ConcurrentModificationException的异常。若使用下面这
种方式:
for(int i = 0;i < list.size();i++){ list.remove(i); }