天天看點

java經典算法-day4

哈喽,各位小夥伴們好,我是喵手。

一、前言

正值金九銀十好時節,又到了刷題月。xdm,有空的歡迎一起呀。無論你是擠公交還是坐地鐵時間,随時随地皆可刷...你可以不用實操,你隻需要看題思考,完後有空coding就好呀。接下來我要開啟我的刷題之旅啦,喜歡的小夥伴歡迎點贊關注哦。

二、題目描述:

題目1:

将一個正整數分解質因數。例如:輸入90,列印出90=2*3*3*5。

題目2:

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

三、思路分析:

題1、

對n進行分解質因數,應先找到一個最小的質數k,然後按下述步驟完成:

  1. 如果list等于1,則說明該數是一個素數,手動再進行把1添加進去。
  2. 如果n>k,但n能被k整除,list則n添加進去,并用n除以k的商,作為新的正整數你n,重複執行第一步。
  3. 如果n不能被k整除,則用k+1作為k的值循環,重複執行第一步。

題2、

這題就相對于上題難度有所下降,利用條件運算符嵌套指定輸出即可。

考察的就是(a>b)?a:b,三目運算符。

四、算法實作:

題1AC代碼:

第一步先寫一個求正整數求分解質因數的方法。

/**
 * 求正整數分解質因數
 */
public static List fenjie(int num, List list) {
    for (int i = 2; i <= num; i++) {
        //進行求餘判斷
        if ((num % i) == 0) {
            //因子添加
            list.add(i);
            //把商作為值再進行循環
            num = num / i;
            //重置i
            i = 1;
        }
    }
    //說明本身是個素數。需要手動把1錄進行
    if (list.size() == 1) {
        list.add(1);
    }
    return list;
}      

第二步:寫一個main函數進行方法調用并控制台輸出列印。

public static void main(String[] args) {

    System.out.print("請輸入一個大于2的正整數:");
    Scanner scanner = new Scanner(System.in);
    int num = scanner.nextInt();

    //用來存儲分解的因子
    List<Integer> list = new ArrayList<>();
    List<Integer> fenjie = fenjie(num, list);
    System.out.print("這個數分解質因數為:" + num + " = ");

    for (int i = 0; i < fenjie.size(); i++) {
        //不輸出最後一個"*"
        if (i == fenjie.size() - 1) {
            System.out.print(fenjie.get(i));
            break;
        }
        System.out.print(fenjie.get(i) + "*");
    }
    System.out.println("");
}      

題2AC代碼:

第一步,先寫一個的三目運算組合法。

/**
 * 利用條件運算符嵌套指定輸出
 */
public static String sm(int num) {
    String s = (num >= 90) ? "A" : (num >= 60 ? "B" : "C");    return s;
}      
如果(num>=90)為true,則輸出"A";如果(num>=90)為false,則進行(num >= 60 ? "B" : "C")判斷。如果(num>=60)為true,則輸出"B";如果(num>=60)為false,則輸出"C";      

五、總結:

綜上,這兩道題,一道是考察三目運算符,一道是考察分解質因數題。基本解題思路我都在上方進行了詳細介紹,供大家參考。

如果你有更好的解題思路或者想法,歡迎評論區留言告訴我哦,喵手感激不盡。

六、文末:

好啦,以上就是我這期的全部内容,如果有任何疑問,歡迎下方留言哦,咱們下期見。

... ...

學習不分先後,知識不分多少;事無巨細,當以虛心求教;三人行,必有我師焉!!!

wished for you successed !!!

---------------------------------------------------------------------

⭐️若喜歡我,就請關注我叭。