Escribe un programa para encontrar el n-ésimo número feo. Los números feos son números positivos cuyos factores primos solo incluyen 2, 3, 5. Por ejemplo, 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 es la secuencia de los primeros 10 números feos. Tenga en cuenta que 1 se suele tratar como un número desagradable.
Solución Java
public int nthUglyNumber(int n) { if(n<=0) return 0; ArrayList<Integer> list = new ArrayList<Integer>(); list.add(1); int i=0; int j=0; int k=0; while(list.size()<n){ int m2 = list.get(i)*2; int m3 = list.get(j)*3; int m5 = list.get(k)*5; int min = Math.min(m2, Math.min(m3, m5)); list.add(min); if(min==m2) i++; if(min==m3) j++; if(min==m5) k++; } return list.get(list.size()-1); } |