Número Feo
Este problema consiste en determinar si un número entero n es “feo”. Un número feo es un entero positivo cuyos factores primos están limitados a 2, 3 y 5.
Solución
class Solution {
public:
bool isUgly(int n) {
if (n <= 0)
return false;
for (int p : {2, 3, 5}) {
while (n % p == 0)
n /= p;
}
return n == 1;
}
};
Primero se descartan los valores no positivos, que por definición no son feos. Después, para cada uno de los primos 2, 3 y 5, se divide n entre ese primo tantas veces como sea posible, eliminando así todos esos factores. Si al final el número quedó reducido a 1, significa que solo tenía factores 2, 3 y 5, por lo que es feo; en caso contrario, le sobra algún otro factor primo.