An ugly number is a positive integer whose prime factors are limited to 2, 3, and 5.
Given an integer n, return true if n is an ugly number.
一個不好看的數字是正整數,且質因數限制為 2、3、5。 給予一個整數 n,如果符合此條件則回傳正整數。 ex.尋找 2、3、5的共同公因數。
Example 1:
Input: n = 6 Output: true Explanation: 6 = 2 × 3
Example 2:
Input: n = 1 Output: true Explanation: 1 has no prime factors, therefore all of its prime factors are limited to 2, 3, and 5.
Example 3:
Input: n = 14 Output: false Explanation: 14 is not ugly since it includes the prime factor 7.
Solution:
1. 運用 for of 來將陣列數值依序放入。
2. 使用 while 來判斷,當 n 可以被整除,則將 n / p。
當 n 沒法被整除,則 break。
3. 回傳 n === 1 的結果。
Code 1:
var isUgly = function(n) { for (let element of [2, 3, 5]) { while (n && n % element === 0) { n /= element } } return n === 1; };
FlowChart:
Example 1
Input: n = 6 n = 6, element = 2, 3, 5 console.log(n, element, (n % element === 0)) step.1 6, 2, true 3, 2, false step.2 3, 3, true 1, 3, false step.3 1 5 false return n === 1 //true
Example 2
Input: n = 1 n = 1, element = 2, 3, 5 console.log(n, element, (n % element === 0)) step.1 1 2 false step.2 1 3 false step.3 1 5 false return n === 1 //true
Example 3
Input: n = 14 step.1 14 2 true 7 2 false step.2 7 3 false step.3 7 5 false return n !== 1 //false
Code 2:
var isUgly = function (n) { if (n <= 0) return false; while (n % 2 === 0) n /= 2; while (n % 3 === 0) n /= 3; while (n % 5 === 0) n /= 5; return n === 1; };
Code 3:
var isUgly = function (n) { if (n <= 0) return false; for (let element of [2, 3, 5]) { while (n % element === 0) { n /= element } } return n === 1; };