知識+看到拿來做做

 

質數的地方 因頭腦不好 還在想更好的演算法...

========================輸出

MathTool  

========================Main.java

Created with colorer-take5 library. Type 'java'

import java.util.Scanner;


public class Main {

    
    public static void main(String[] args) {//主功能表
        MathTool mt=new MathTool();
        Scanner sc =new Scanner(System.in);
        int  SelectItem;
        System.out.println("**************************");
        System.out.println("*1.求質數                                            *");
        System.out.println("*2.FibonacciSequence數列    *");
        System.out.println("*3.算整數陣列第二大值              *");
        System.out.println("**************************");
        if(sc.hasNextInt()){
            SelectItem=sc.nextInt();
            switch(SelectItem){
                case 1:
                    System.out.println("請輸入一整數:");
                    int case1=sc.nextInt();
                    if(mt.JudgePrime(case1)==true){
                        System.out.println(case1+"是質數");
                    }else{
                        System.out.println(case1+"不是質數");
                    }
                    break;
                case 2:
                    System.out.println("請輸入要查詢的第幾項數:");
                    int case2=sc.nextInt();
                    System.out.println("FibonacciSequence數列第"+case2+"項為"+mt.FibonacciSequence(case2));
                    break;
                case 3:
                    System.out.println("請輸入陣列大小:");
                    int item=sc.nextInt();
                    int [] iarray=new int [item];
                    System.out.println("請輸入"+item+"個整數:");
                    for(int i=0;i<item;i++)
                        iarray[i]=sc.nextInt();
                    System.out.println("陣列第二大元素為"+mt.ArraySecondMax(iarray));
                    break;
                default:
                    System.out.println("請輸入功能表內有的編號");
            }
        }else{
            System.out.println("請輸入數字");
        }
        
        

    }

}

 

========================MathTool.java

Created with colorer-take5 library. Type 'java'

import java.util.TreeSet;


public class MathTool {//MathTool類別
     public Boolean JudgePrime(int JudgeValue){//判斷質數回傳true表示是質數,false表示不是
         Boolean  WhetherPrime=true;
	
if(JudgeValue==1){//1不是質數
WhetherPrime=false;
			return WhetherPrime;
}else if(JudgeValue%2==0&&JudgeValue!=2){//如果JudgeValue不是2又能被2整除,則不是質數傳回false WhetherPrime=false; return WhetherPrime; }else if(JudgeValue%3==0&&JudgeValue!=3){//如果JudgeValue不是3又能被3整除,則不是質數傳回false WhetherPrime=false; return WhetherPrime; }else if(JudgeValue%5==0&&JudgeValue!=5){//如果JudgeValue不是5又能被5整除,則不是質數傳回false WhetherPrime=false; return WhetherPrime; }else if(JudgeValue%7==0&&JudgeValue!=7){//如果JudgeValue不是7又能被7整除,則不是質數傳回false WhetherPrime=false; return WhetherPrime; }else{//不是以上情況從11到JudgeValue開根號 去除JudgeValue 可整除不是質數 for(int i=11;i<=(int)Math.ceil(Math.sqrt(JudgeValue));i+=2){ if(JudgeValue%i==0){ WhetherPrime=false; return WhetherPrime; } } } return WhetherPrime;//以上情況都不能整除則是質數 傳回預設值true } public int FibonacciSequence(int count){//1,1,2,3,5,8,13....費布納西數列 int Acount1=1;//是放an int Acount2=1;//是放a(n+1) int Acount3=1;//是放a(n+2) int temp2;//放前一次的a(n+2) int temp1;//放前一次的a(n+1) for(int i=3;i<=count;i++){ temp2=Acount3; temp1=Acount2; Acount3=temp2+temp1; Acount2=temp2; Acount1=temp1; } return Acount3; } public int ArraySecondMax(int[] a){//算整數陣列第二大值 TreeSet ts=new TreeSet();//new一個TreeSet物件ts for(int i=0;i<a.length;i++)//用迴圈把整數陣列a的每一個值加進ts裡 ts.add(a[i]); ts.remove(ts.last());//移除掉ts最後一個數(最大數)
         //所以現在ts最後一個數就是陣列a的第二大數,把他指派給變數SecondMax
         int SecondMax=Integer.parseInt(ts.last().toString());
         return SecondMax;//回傳SecondMax
     }
     
     

}

arrow
arrow
    全站熱搜

    cookiesp 發表在 痞客邦 留言(0) 人氣()