经典算法问题的java实现<一>
1.如何计算闰年(Leap Year)?
四年一闰;百年不闰;四百年再闰。
具体参照:http://baike.baidu.com/view/3085625.htm
boolean isLeapYear(int year) {return (year%4 == 0 && year%100 !=0) || (year%400 == 0);}boolean isPrimeNumber(int n) {int n1 = (int) Math.sqrt(n);for (int i = 2; i <= n1; i++) {if(n%i == 0) {return false;}}return true;}
//返回质因数数组Integer[] decPrime(int n) {List<Integer> list = new ArrayList<Integer>();for (int i=2;i <= n;i++){while(n != i){if(n%i != 0){break;//不能整除肯定不是因数,能够整除在这里一定是质数。因为所有的2,3,5,7 //都被除完之后。剩下的因数只能是奇数,且是质数。}list.add(Integer.valueOf(i));n = n/i;}}list.add(Integer.valueOf(n));return list.toArray(new Integer[list.size()]);}long gcd(long x,long y) {if(x < y) {long m = x;x = y;//x存储较大的一个数y = m;}long k = 0;while(y != 0) {k = x%y;x = y;y = k;}return x;}long lcm(long x,long y) {return x*y/gcd(x,y);}boolean isPerfectNumber(long n) {int s = 0 ; //迭代求出所有因子之和for (int i = 1; i < n; i++) {if(n%i == 0) {s +=i;}} //判断该数是否等于它的因子之和,是则是完数。if( s == n) {return true;}return false;}//该算法使用的是基本数据类型,只能计算出少量“水仙花数”。建议感兴趣的读者用BigInteger来求“水仙花数”。boolean isDaffodilsNumber(long l) {char [] c = String.valueOf(l).toCharArray();int d = 0,n = c.length;long sum = 0;for (int i = 0; i < c.length; i++) {d = c[i]-'0';sum += Math.pow(d, n);//可能存在精度丢失现象}if(sum == l) {return true;}return false;}boolean isPalindromeNumber(long l) {char [] c = String.valueOf(l).toCharArray();int len = c.length/2;for (int i = 0; i < len; i++) {if(c[i] != c[c.length-1-i]) {return false;}}return true;}/** * 求平方根 * @param d 待开方数 * @param precision 算术平方根的精度 * @return */double sqrt(double d,double precision) {double x1 = d/2, x2 =(x1 + d/x1)/2;while(Math.abs(x2 -x1)>precision) {x1 = x2;x2 =(x1 + d/x1)/2;}return x1;}//如果是奇数返回true,否则是偶数 则返回false。boolean isOdd(long l) {if((l & 0x01) == 0) {return false;}return true;}return (s == n);
10. if(sum == l) { 11. return true; 12. } 13. return false; return (sum == l);
1.//如果是奇数返回true,否则是偶数 则返回false。 2.boolean isOdd(long l) { 3. if((l & 0x01) == 0) { 4. return false; 5. } 6. return true; 7.} boolean isOdd(long l) { return ((l & 0x01) == 1); }