哈喽,各位小夥伴們好,我是喵手。
一、前言
正值金九銀十好時節,又到了刷題月。xdm,有空的歡迎一起呀。無論你是擠公交還是坐地鐵時間,随時随地皆可刷...你可以不用實操,你隻需要看題思考,完後有空coding就好呀。接下來我要開啟我的刷題之旅啦,喜歡的小夥伴歡迎點贊關注哦。
二、題目描述:
題目1:
将一個正整數分解質因數。例如:輸入90,列印出90=2*3*3*5。
題目2:
利用條件運算符的嵌套來完成此題:學習成績大于90分的同學用A表示,60-89分之間的用B表示,60分以下的用C表示。
三、思路分析:
題1、
對n進行分解質因數,應先找到一個最小的質數k,然後按下述步驟完成:
- 如果list等于1,則說明該數是一個素數,手動再進行把1添加進去。
- 如果n>k,但n能被k整除,list則n添加進去,并用n除以k的商,作為新的正整數你n,重複執行第一步。
- 如果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 !!!
---------------------------------------------------------------------
⭐️若喜歡我,就請關注我叭。