算法
爪蛙爱踢程序猿
这个作者很懒,什么都没留下…
展开
-
最小公倍数
1.还是穷举法原理:存在两个数m、n,求其最小公倍数。 假设m>n,将i从m到m*n遍历, 只要满足i%m==0&&i%n==0,将i返回即为最小公倍数代码:int Lcm()原创 2014-12-02 20:39:59 · 405 阅读 · 0 评论 -
不使用第三个变量实现元素之间的交换
解决这类的问题的关键的在于:运算可逆,逻辑可逆只要有+就可以用-返回去有*就可以用/返回去用^可以用^返回去还有一个巧妙的方法将三步操作合为一步我这里用java写,用c的自己加*第一种void change(int a,int b){a=a*b;b=a/b;a=a/b;}该方法中我们用乘法新产生一个值,用除法将值还原回去缺点:用乘法使元素变大,类原创 2014-12-02 21:21:33 · 497 阅读 · 0 评论 -
求最大公约数
1.更相减损法更相减损术,是出自《九章算术》的一种求最大公约数的算法,它原本是为约分而设计的,但它适用于任何需要求最大公约数的场合。 《九章算术》是中国古代的数学专著,其中的“更相减损术”可以用来求两个数的最大公约数,即“可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也。以等数约之。”翻译成现代语言如下:第一步:任意给定两个正整数;判断它们是否都是偶原创 2014-12-02 16:20:18 · 644 阅读 · 0 评论 -
求一个整数装换为二进制数以后的的1的个数
这里主要用移位运算符来完成这个目的,移位比用除法快很多。c语言中移位运算符有^ & | >> java中还多一个移位运算符>>>(为我们移位方便很多)>>这个运算符:要移位的数为正数时,没问题,当移位的运算符为负数时,高位为1,右移的时候会在高位一直填补1,最终将陷入无限循环,在java中用>>>解决了这个问题,右移时,无论正负均在高位补0;第一种:原理:原创 2014-12-03 19:37:55 · 383 阅读 · 0 评论 -
大数运算(c、java)
最近看剑指offer的时候,看到c语言操作大数,于是就想用java来写写大数,小伙伴们都表示看不懂,java有强大的BigInteger和BigDecimal类来支持大数的操作,可是,咸的蛋疼的人总是有的。目前只完成了加减乘。java代码import java.util.Arrays;public class Test { // 将字符串转成整形数组 static int[原创 2014-12-06 11:12:21 · 422 阅读 · 0 评论