劍指offer(33)醜數

2021-09-18 08:24:28 字數 937 閱讀 8129

題目描述:把只包含質因子2、3和5的數稱作醜數(ugly number)。例如6、8都是醜數,但14不是,因為它包含質因子7。 習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。

思路:(1)直覺想法是考察每乙個數,如果它能被2整除,就一直讓2除;如果能被3除,就一直讓3除;如果能被5除,就一直讓3除,判斷最後結果是否為1,如果是,則為醜數,否則不是。

(2)只考慮醜數。如果乙個數為醜數,則滿足該數=(2^x)*(3^y)*(5^z)。定義醜數陣列,0位置為1,每次加入乘以三個值之後的最小值。

**一:

public class main 

while(number % 3 == 0)

while(number % 5 == 0)

return (number == 1) ? true : false; }

//從1開始尋找第1500個醜數

public static int getuglynumber(int index)

int number = 0;

int uglyfound = 0;

while(uglyfound < index)

} return number;

}

**二:

public class solution

listlist = new arraylist();

list.add(1);

int m2 = 0, m3 = 0, m5 = 0, i2 = 0, i3 = 0, i5 = 0, min = 0;

while(list.size() < index)

if(min == m3)

if(min == m5)

} return list.get(index-1);

}}

《劍指offer》33 醜數

把只包含質因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含質因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。c 實現 class solution return a index 1 python實現 coding utf 8 cl...

劍指offer 33 醜數

把只包含質因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含質因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。通俗易懂的解釋 首先從醜數的定義我們知道,乙個醜數的因子只有2,3,5,那麼醜數p 2 x 3 y 5 z,換句話說乙個醜...

劍指offer33 醜數

題目描述 把只包含質因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含質因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。這裡講解的很詳細了。coding utf 8 class solution def getuglynumber ...