java面试的题目兔子、素数、水仙花

题目一:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少? 程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21…

  public class Prog1{
    	public static void main(String[] args){
    		int n = 10;
    		System.out.println("第"+n+"个月兔子总数为"+fun(n));
    	}
    	private static int fun(int n){
    		if(n==1 || n==2)
    		   return 1;
    		else
    		   return fun(n-1)+fun(n-2);
    	}
    }

题目二:判断101-200之间有多少个素数,并输出所有素数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。

  public class Prog2{
        	public static void main(String[] args){
        		int m = 1;
        		int n = 1000;
        		int count = 0;
        		//统计素数个数
        		for(int i=m;i<n;i++){
        			if(isPrime(i)){
        				count++;
        				System.out.print(i+" ");
        				if(count%10==0){
        					System.out.println();
        				}
        			}
        		}
        		System.out.println();
        		System.out.println("在"+m+"和"+n+"之间共有"+count+"个素数");
    	}
    	//判断素数
    	private static boolean isPrime(int n){
    		boolean flag = true;
    		if(n==1)
    		  flag = false;
    		else{
    			for(int i=2;i<=Math.sqrt(n);i++){
    			if((n%i)==0 || n==1){
    				flag = false;
    				break;
    			}
    			 else
    			   flag = true;
    		  }
    		}
    		return flag;
    	}
    }


题目三:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。

public class Prog3{
	public static void main(String[] args){
		for(int i=100;i<1000;i++){
			if(isLotus(i))
			   System.out.print(i+" ");
		}
		System.out.println();
	}
	//判断水仙花数
	private static boolean isLotus(int lotus){
		int m = 0;
		int n = lotus;
		int sum = 0;
		m = n/100;
		n  -= m*100;
		sum = m*m*m;
		m = n/10;
		n -= m*10;
		sum += m*m*m + n*n*n;
		if(sum==lotus)
			return true;
		else
			return false;
		}
}


原文地址:https://www.cnblogs.com/sxjblogs/p/11241589.html