2012年12月25日

摘要: 直接用辗转相除法。即设f(x,y)为x,y最大公约数,则f(x,y) = f(y, x%y).主要的思路比较清晰,在这里记录一下辗转相除法的证明,就当找一找高中的感觉吧。。设:x,y(x>=y)最大公约数是c,证明x,x%y的最大公约数同样是c。1、x = k*y + r; r = x%y.2、设x = mc,y = nc;3、由1,2得:mc=knc +r,即:r=(m-kn)c;4、此时,只需证明m-kn与n是互素即可。反证:设m-kn与n非互素,则m-kn = ed,n =qd, => m = kn+ed = kqd+ed = (kq+e)d, 又x =mc = (kq+e) 阅读全文
posted @ 2012-12-25 22:16 小龙人2012 阅读(133) 评论(0) 推荐(0)
摘要: 第一题:求N!末尾有多少个0.解题思路:通过判断阶乘中每一个数包含的2和5的个数,取其中更小的那个数即为末尾0的个数。 更进一步观察发现,2的个数肯定比5的个数多,所以,只需要求5的个数。。。第二题:求N!的二进制表示中最低位1的位置。解题思路:其实,就是求阶乘结果中2的个数+1。上述两题都转化为求N!的质因数的个数,一种简单的思路就是循环获得小于等于N的每一个数所包含的质因数x的个数,最终得到的总数即为所求。第二种方法是:N!中要得到包含某个数k的个数,其实相当于[N/k] +[N/k2] +[N/k3] +[N/k4] +...。原理:首先,[N/k]等于1,2,3,...,N... 阅读全文
posted @ 2012-12-25 16:41 小龙人2012 阅读(256) 评论(0) 推荐(0)

导航