[Diario de preguntas de pincel] 762. El cálculo de los números primos en representación binaria se establece

[TOC]

¡Acostúmbrate a escribir juntos! Este es el quinto día de mi participación en el "Nuevo plan diario de Nuggets · Desafío de actualización de abril", haga clic para ver los detalles del evento .

[Diario de preguntas de pincel] 762. El cálculo de los números primos en representación binaria se establece

El artículo 25 de este diario de escritura, el título es: 762. El cálculo de los números primos en representación binaria es simple .

1. Descripción del tema:

El tercer día de las vacaciones de Qingming, después de regresar a Shenzhen, hice algunos ajustes para ver cuál es la pregunta de código leet hoy. Todavía tienes que mantener el hábito, siempre tómate un tiempo todos los días para hacer algo que quieras hacer.

Es una pregunta simple para mirar más de cerca, debería poder acostarme más temprano esta noche.

2. ¿Qué idea examina esta pregunta? ¿Cuál es tu pensamiento?

Todavía tenemos que echar un vistazo más de cerca a la información que nos transmite la pregunta en sí:

  • La pregunta dará un intervalo, los datos en el intervalo son todos números enteros, necesitamos calcular el número de 1 en el número binario de cada número en este intervalo
  • Necesitamos saber cómo verificar si un número es primo
  • Después de completar los 2 pasos anteriores, podemos usar el método transversal tonto para lograr este problema

Para calcular cuántos 1 contiene el número binario de un número, podemos usar el método de lanzar y dividir para procesar , por supuesto, también podemos usar funciones de biblioteca para procesar, aquí usamos golang, entonces si usamos directamente la función de biblioteca para calcular , se puede usar así:bits.OnesCount(具体的 uint 数字)

Entonces surge la pregunta de ¿qué es un número primo?

Si un número es mayor que 1, y el número es divisible solo por 1 y por sí mismo, y no por ningún otro número, entonces el número es primo

Con respecto a cómo comprobar que un número es un número primo, lo aprendimos y practicamos cuando estábamos estudiando el lenguaje C en la universidad, por lo que no entraremos en detalles aquí.

3. Codificación

De acuerdo con la lógica y el análisis anteriores, podemos traducirlo al siguiente código

La codificación es la siguiente:

func countPrimeSetBits(left int, right int) (res int) {
	// 直接傻瓜式的遍历
    for i:=left;i<=right;i++ {
        // golang 中 使用 bits.OnesCount() 来计算 uint 数中 1 个个数
        if isPrimeNum(bits.OnesCount(uint(i))){
            res++
        }
    }

    return
}

// 校验是否是质数
func isPrimeNum(num int) bool {
    if num < 2 {
        return false
    }

    for i:=2; i*i <= num; i++ {
        if num %i == 0 {
            return false
        }
    }
    return true
}
复制代码

La codificación de esta pregunta es en realidad muy convencional.

  • El primer paso es recorrer la matriz dada por la pregunta
  • El segundo paso es calcular el número de 1 en el número binario del número específico
  • Comprobar si los datos entrantes son un número primo

4. Resumen:

Entonces, para esta pregunta, su complejidad espacial es obviamente O(1), porque solo introducimos el consumo de espacio de nivel constante

Entonces, ¿cuál es su complejidad temporal? xdm ¿Tienes un concepto claro?, si te interesa, puedes intentar calcular su complejidad temporal, de momento lo escribiré indefinidamente.

Dirección del título original: 762. El conjunto de cálculos de números primos en representación binaria

Estoy aquí hoy, lo que he aprendido, si hay alguna desviación, corríjame

Bienvenido a me gusta, seguir, favorito

Amigos, su apoyo y aliento son la motivación para que yo persista en compartir y mejorar la calidad.

Bien, aquí está esta vez.

La tecnología es abierta, y nuestra mentalidad debe ser abierta. Acepta el cambio, vive bajo el sol y sigue adelante.

Soy el pequeño demonio Nezha , bienvenido a dar me gusta, seguir y coleccionar, hasta la próxima ~

Supongo que te gusta

Origin juejin.im/post/7083139872822657061
Recomendado
Clasificación