读书人

惯用的一些基本算法 (1)

发布时间: 2012-12-20 09:53:21 作者: rapoo

常用的一些基本算法 (1)
闲来无事,,回顾了下一些基本常用的算法题。一共40到左右,以后每天连载着写点。

(1) 兔子生兔子问题。
简单描述: f3=f1+f2;
例子: 1,1,2,3,5,8,13......
代码:

    public static void main(String[] args){       robat(8);}     private static Integer  robat(Integer count){            Integer result=0;       for(int i=1;i<count;i++){           if(i==1 || i==2){                result=1;             }else{                 result=robat(i-1)+robat(i-2);             }   }               return result;}    

(2) 素数问题
简单描述: 计算某两个数范围内的素数或质数
例子: 求101到200之间的素数。
代码:
       for(int i=101;i<=200;i++){             boolean b=true;             for(int j=2;j<=Math.sqrt(i);j++){                    if(i%j==0){                           b=false;                      }              }                if(b){                    System.out.println(i);               }       }       

(3) 正整数分解质因数
简单描述:对n进行分解质因数
例子:输入90,打印出90=2*3*3*5
代码:
        public static void main(String[] args) {// TODO Auto-generated method stubanalyZhi(100);}private static void analyZhi(int shu) {// TODO Auto-generated method stubList<Integer> rlist=new ArrayList<Integer>();for(int i=2;i<=shu;i++){boolean b=true;if(i==2){rlist.add(i);}else{for(int j=2;j<=Math.sqrt(i);j++){if(i%j==0){b=false;break;}}if(b==true){//System.out.println(i);rlist.add(i);}  }}Integer a,dd=0;for(int m=0;m<rlist.size();m++){a=rlist.get(m);if(shu%a==0){dd=shu/a;System.out.println(a);break;}else{continue;}}if(dd>1){analyZhi(dd);}}      

大家,如果有啥新的算法思路,请赐教。。
private static List<Integer> result = new ArrayList<Integer>();public static void main(String[] args) throws Exception {int num = 90;resolveNum(num);System.err.println(result);}public static void resolveNum(int num) {if (num == 1) {return;}for (int i = 2; i <= num; i++) {if (num % i == 0) {result.add(i);resolveNum(num / i);return;}}}
其他的也都有问题

读书人网 >编程

热点推荐