33. Simply Emirp (CPE10428, UVA10235) - CPE一顆星解答與說明
CPE一顆星49題解答 - pdf 電子檔,售價 199 元,
購買電子檔可將筆記與完整解答帶著走,
坐車、上課時皆可隨時複習,
不受網路或廣告影響,
若有需要請來信購買 greens2314@gmail.com
題目
- 判斷數字 N 是否為質數、非質數或反質數
- 質數(Prime):因數只有 2個 (1 跟 n)
- 例如 17 的因數 1,17
- 非質數(Non-prime):有 3 個以上的因數
- 例如 8 的因數 1,2,4,8
- 反質數(Emirp): 將數字 n 由左而右讀,或由右而左讀,數字都是質數
- 17 跟 71 都是質數
輸入說明
- 測試資料有多筆
- 每一行都有一個數字 N
輸出說明
- 根據每個數字 N ,印出結果
解題技巧
- 質數判斷
- 反轉字串
- 數字轉字串
- 字串轉數字
解題過程
取得輸入
將數字 n 反轉
- 將數字 n 轉字串 Integer.toString(456)
- 使用 for 迴圈,由大到小(由右而左)讀取字串 n 的每一個字元,呼叫 charAt(i)
- 將字元累加到字串中,可得到反轉的字串
- 將累加的字串轉數字 Integer.parseInt("654")
判斷數字 n 是否為質數
- 使用布林值紀錄
- 質數(Prime):因數只有 2個 (1 跟 n),例如 17 的因數 1,17
- 非質數(Non-prime):有 3 個以上的因數,例如 8 的因數 1,2,4,8
- 使用 for 迴圈,產生 2 ~ 小於 n 的數字
- 逐一檢查是否能整除數字 n
- 若有數字能整除 n,表示 n 不是質數,呼叫 break 結束迴圈
判斷反轉後的數字 n,是否為質數
- 使用布林值紀錄
- 邏輯與上一步驟一樣,可字行考慮是否宣告成方法
- 使用 for 迴圈,產生 2 ~ 小於反轉n 的數字
- 逐一檢查是否能整除反轉的數字 n
- 若有數字能整除反轉 n,表示反轉 n 不是質數,呼叫 break 結束迴圈
印出結果
- 印出數字 n
- 根據 n 是否為質數 與 反轉 n 是否為質數 的布林值來判斷使用的輸出格式
- 若 n 為質數、反轉 n 為質數 ,要再判斷 n 是否不等於反轉 n
- 原始數字 11 ,反轉後的數字一樣是 11 ,這樣只有 1 個數字,所以不是反質數
留言
張貼留言