JAVA一些基礎算法


復習一下JAVA的基礎算法

 1.題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第四個月后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?

View Code
public class mainTest {
    /**
     * 題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,
     * 小兔子長到第四個月后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?
     * 規律:1.1.2.3.5.8.13
     */
    public static void main(String[] args) {
        System.out.println(f(3));
    }
    public static int f(int i){
        if(i==1||i==2){
            return 1;
        }else{
            return f(i-1)+f(i-2);
            }
    }
}

2.題目:判斷101-200之間有多少個素數,並輸出所有素數。結果為101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199

 

View Code
public class mainTest {
    /**
     * 思路:素數是只能被自身跟1整除的數。循環i從101-200.與比i小的數(又一個循環j,從2到i)求余,
     * 如果i%j==0並且i!=j說明i可以被其他數整除,則跳出循環,
     * 如果i不可以被j的任何數整除,
     * 只有當i==j的時候才可以整除(就是被自身整除)就為素數  
     */
    public static void main(String[] args) {
        for (int i = 101; i < 201; i++) {
            int flag = 0;
            for (int j = 2; j <= i; j++) {
                if (i % j == 0 && i != j) {
                    break;
                } else if (i == j) {
                    flag = 1;
                }
            }
            if (flag == 1) {
                System.out.print(i+",");
            }
        }
    }
}

 

3.題目:打印出1000以內所有的 "水仙花數 ",所謂 "水仙花數 "是指一個三位數,其各位數字立方和等於該數本身。例如:153是一個 "水仙花數 ",因為153=1的三次方+5的三次方+3的三次方。結果:153,370,371,407

View Code
public class mainTest {
/**
 * 主要分別取得個位數就好了。
 * @param args
 */    
    public static void main(String[] args) {
        for (int i = 100; i < 1000; i++) {
            math(i);
        }
    }
    public static void math(int i){
        int i3=i%10;//個位數
        int i2=(i%100)/10;//十位數
        int i1=i/100;//百位數
        if(i==(i1*i1*i1)+(i2*i2*i2)+(i3*i3*i3)){
            System.out.println(i);
        }
        
        
    }
}

4.題目:利用條件運算符的嵌套來完成此題:學習成績> =90分的同學用A表示,60-89分之間的用B表示,60分以下的用C表示。   

 

View Code
public class mainTest {
    /**
     * 學習成績> =90分的同學用A表示,60-89分之間的用B表示,60分以下的用C表
     */
    public static void main(String[] args) {
        test(90);
    }
    public static void test(int i){
        String s ="";
        s=(i<60)?"C":(i>=90?"A":"B");
        System.out.println(s);
            
    }
    
}

 

5.題目:一球從100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在   10次落地時,共經過多少米?第10次反彈多高? 

 

View Code
public class mainTest {
    /**
     * 一球從100米高度自由落下,每次落地后反跳回原高度的一半;
     * 再落下,求它在   第10次落地時,共經過多少米?第10次反彈多高? 
     */
    public static void main(String[] args) {
        double s =0;
        double h =100;
        
        for (int i = 1; i < 11; i++) {
            s+=h;
            System.out.println(s);
            h=h/2;
            System.out.println(h);
        }
        System.out.println(s);
    }
    
}

 6.題目:有1234個數字,能組成多少個互不相同且無重復數字的三位數?都是多少? 

 

View Code
public class mainTest {
    /**
     *題目:有1、2、3、4個數字,能組成多少個互不相同且無重復數字的三位數?都是多少?   
     * 
     */
    public static void main(String[] args) {
        int t=0;
        for (int i = 1; i < 5; i++) {
            int s1=i;
            for (int j = 1; j < 5; j++) {
                int s2=j;
                for (int k = 1; k < 5; k++) {
                    int s3=k;
                    String s= String.valueOf(s1)+String.valueOf(s2)+String.valueOf(s3);
                    if(s1!=s2&&s1!=s3&&s2!=s3){
                        t++;
                    System.out.println(s);
                    }
                }
            }
            
        }
        System.out.println(t);
    }    
}

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM