1.有一对兔子,从出生后第三个月起每个月都生一对兔子,小兔子涨到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月兔子总数为多少?
程序分析:斐波那契数列 0.1.1.2.3.5.8.13.21
/** * 斐波那契数列 * @param months * @return */ public static int fib(int months) { if(months==0){ return 0; }else if(months==1){ return 1; }else{ return fib(months - 1) + fib(months - 2); } }
2.判断101~200之间的有多少个素数,并输出所有素数
程序分析:素数判断方法 除去一和本身 没有其他因数
/** * 求 A - B 之间的素数 */ public static void zs(int start,int end){ int count = 0; List<Integer> zsList = new ArrayList<>(); for(int i = start;i<=end;i++){ if(isZs(i)){ count++; zsList.add(i); } } if(zsList!=null&&zsList.size()>0){ for (Integer integer : zsList) { System.out.println(integer); } } System.out.println("总数:"+count); } public static boolean isZs(int num){ //除了 1 和 他本身没有其他因数 for(int i= 2;i<num;i++){ if(num%i==0){ return false; } } return true; }
3.打印所有的水仙花数
程序分析:水仙花数指 一个三位数,每位上面的数的立方和等于这个三位数。
/** * 三位数水仙花 */ public static void sxh(){ for (int i = 100; i < 1000; i++) { int bw = i/100; int sw = i/10%10; int gw = i%10; if((bw*bw*bw + sw*sw*sw + gw*gw*gw)==i){ System.out.println("水仙花"+i); } } }
4.将一个正整数分解质因数 eg: 90 = 2*3*3*5
程序分析:1、如果n是质数,就直接结束,打印出来就好
2、如果i能整除n,就打印i,然后更新n = n / i;递归
3、如果i不能整除n,就i++
public static void fjzys(int number) { // 递归实现 for (int i = 2; i <= number; i++) { if (i == number) { System.out.print(i); return; } if (number > i && (number % i == 0)) { System.out.print(i + "*"); fjzys(number / i); break; } } }
5.求两个正整数m,n的最大公约数,最小公倍数