【描述】
醜數是指不能被2,3,5以外的其他素數整除的數。把醜數從小到大排列起來,結果如
下:1,2,3,4,5,6,8,9,10,12,15,…
求第1500個醜數。
【思路】
從小到大依次生成。
最基礎的醜數是1,而後的所有醜數都是在這個基礎上生成的。
如果按照正向思維分析,需要考慮除2,3,5以外的所有素數–這顯然不切實際。
因此考慮派生的性質:假設乙個醜數為x,那麼2x,3x,5x也都是醜數。
這樣,就可以使用乙個優先佇列儲存所有已經生成的醜數,每次取出最小的醜數,以使密集生成三個新的醜數。
【**】
//醜數,2x,3x,5x
#include#include#include#include#include#includeusing namespace std;
typedef long long ll;
const int coeff[3] = ;
int main()
for (int j = 0;j < 3;j++)
}} return 0;
}
例題5 7 醜數 UVa136
演算法 競賽入門經典 第2版 第5章c 與stl入門 例 題5 7 醜數 uva136 感悟。菜題乙個。2 基本思路,能被2整除,一直除2 能被3整除,一直除3 能被5整除,一直除5 最後值為1,則為醜數。3 編好提交 limit exceeded,菜題不菜,感受到競賽題的威力。4 用printf ...
leetcode 263 醜數(醜數II)
給了我們乙個醜數的概念,真是為了考驗我們什麼手段都能使出來。首先說一下第乙個題目,判斷乙個數是不是醜數,就是不斷地去除5 除3 除2就行了,當然除之前看看餘數是不是0,否則的話說明已經不能被這三個數整除了,直接結束 public boolean isugly int num return flag ...
刷題 醜數提取及醜數判斷
把只包含質因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含質因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。根據醜數的定義,我們知道醜數一定是由2 3 5乘積得到,可表示成如下公式 我們預設1是第乙個醜數,初始醜數序列為1,從1開...