JAVA的經典算法

zhongqiu 13年前發布 | 1K 次閱讀 Encuestame B2C

程序1】   題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第四個月后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?   
1.程序分析:   兔子的規律為數列1,1,2,3,5,8,13,21....   
public class exp2{ 
public static void main(String args[]){ 
int i=0; 
for(i=1;i<=20;i++) 
System.out.println(f(i)); 

public static int f(int x) 

if(x==1 || x==2) 
return 1; 
else 
return f(x-1)+f(x-2); 


或 
public class exp2{ 
public static void main(String args[]){ 
int i=0; 
math mymath = new math(); 
for(i=1;i<=20;i++) 
System.out.println(mymath.f(i)); 



class math 

public int f(int x) 

if(x==1 || x==2) 
return 1; 
else 
return f(x-1)+f(x-2); 



【程序2】   題目:判斷101-200之間有多少個素數,并輸出所有素數。   
1.程序分析:判斷素數的方法:用一個數分別去除2到sqrt(這個數),如果能被整除,   
則表明此數不是素數,反之是素數。   
public class exp2{ 
public static void main(String args[]){ 
int i=0; 
math mymath = new math(); 
for(i=2;i<=200;i++) 
if(mymath.iszhishu(i)==true) 
System.out.println(i); 


class math 

public boolean iszhishu(int x) 

for(int i=2;i<=x/2;i++) 
if (x % 2==0 ) 
return false; 
return true; 



【程序3】   題目:打印出所有的 "水仙花數 ",所謂 "水仙花數 "是指一個三位數,其各位數字立方和等于該數本身。例如:153是一個 "水仙花數 ",因為153=1的三次方+5的三次方+3的三次方。   
1.程序分析:利用for循環控制100-999個數,每個數分解出個位,十位,百位。   
public class exp2{ 
public static void main(String args[]){ 
int i=0; 
math mymath = new math(); 
for(i=100;i<=999;i++) 
if(mymath.shuixianhua(i)==true) 
System.out.println(i); 


class math 


public boolean shuixianhua(int x) 

   int i=0,j=0,k=0; 
   i=x / 100; 
   j=(x % 100) /10; 
   k=x % 10; 
   if(x==i*i*i+j*j*j+k*k*k) 
   return true; 
   else 
   return false; 
   


【程序4】   題目:將一個正整數分解質因數。例如:輸入90,打印出90=2*3*3*5。   
程序分析:對n進行分解質因數,應先找到一個最小的質數k,然后按下述步驟完成:   
(1)如果這個質數恰等于n,則說明分解質因數的過程已經結束,打印出即可。   
(2)如果n <> k,但n能被k整除,則應打印出k的值,并用n除以k的商,作為新的正整數你,重復執行第一步。   
(3)如果n不能被k整除,則用k+1作為k的值,重復執行第一步。   
public class exp2{ 
public exp2(){} 
    public void fengjie(int n){ 
        for(int i=2;i<=n/2;i++){ 
            if(n%i==0){ 
                System.out.print(i+"*"); 
                fengjie(n/i); 
                } 
        } 
        System.out.print(n); 
        System.exit(0);///不能少這句,否則結果會出錯 
        } 
        public static void main(String[] args){ 
             String str=""; 
             exp2 c=new exp2(); 
             str=javax.swing.JOptionPane.showInputDialog("請輸入N的值(輸入exit退出):"); 
             int N; 
             N=0; 
             try{ 
                     N=Integer.parseInt(str); 
                     }catch(NumberFormatException e){ 
                         e.printStackTrace(); 
                         } 
            System.out.print(N+"分解質因數:"+N+"="); 
            c.fengjie(N); 
        }    

【程序5】   題目:利用條件運算符的嵌套來完成此題:學習成績> =90分的同學用A表示,60-89分之間的用B表示,60分以下的用C表示。   
1.程序分析:(a> b)?a:b這是條件運算符的基本例子。   
import javax.swing.*; 
public class ex5 { 
        public static void main(String[] args){ 
             String str=""; 
             str=JOptionPane.showInputDialog("請輸入N的值(輸入exit退出):"); 
             int N; 
             N=0; 
             try{ 
                N=Integer.parseInt(str); 
              } 
             catch(NumberFormatException e){ 
                e.printStackTrace(); 
               } 
             str=(N>90?"A":(N>60?"B":"C")); 
             System.out.println(str); 
        }    

 本文由用戶 zhongqiu 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!