常用的一些基本算法 (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;}}}
其他的也都有问题