Hola y bienvenido.
Me gustaría proporcionar un demostración una solución
a nuestro desafío anterior que fue escribir un programa que
genere números primos.
Y así, de nuevo, todo el punto de este programa era usar
una matriz, desea aprender todo sobre matrices y haz esto.
Así que traté de describir el algoritmo de números primos antes.
Pero para mencionarlo nuevamente, puede comprobar si un primo es
un número primo o no.
El número primo significa que uh, no es divisible
por ningún otro número primo.
Entonces ese es el algoritmo de nociones que vamos a pasar.
Y la razón por eso es un número primo se debe a que cualquier número entero
no primo puede expresarse como un múltiplo de factores primos.
Entonces, por ejemplo, 20 tiene el factores primos 2 2 y 5.
Entonces, al saber esto, esto te dice que los números primos no son divisibles uniformemente
por ningún otro número primo.
Así que esto puede ayudar a hacer un prueba de números primos eficiente.
Entonces, lo que puedes hacer eres tú puede comprobar
los números primos generados anteriormente.
Para que podamos almacenar nuestro generó
números primos en una matriz, y así es como puede encontrar esta información.
Además, cualquier número entero de 9 primos n debe tener como uno de sus factores un número entero
menor que o igual a la raíz cuadrada de n.
Entonces esto significa que solo es necesario para determinar si un entero dado
es primo probándolo para pares divisibilidad frente a todos los factores primos hasta la
raíz cuadrada del número entero.
Entonces puedes detenerte ahí y nuevamente lo hace más eficiente.
Esto se va a notar en mi bucle interior cuando salto
para determinar si no he encontrado un número primo.
Voy a saltar si llego a la raíz cuadrada del número entero, es una
condición de salida esencialmente.
Así que sigamos y el camino que puede verificar
eso es solo decir p dividido por números primos es mayor que prime sub-I, y lo usaremos en el bucle más
interno para Pruebe si el valor de p excede o no la raíz cuadrada
de I del primo.
Así que sigamos adelante y abramos el código. bloques para comenzar a escribir código.
Vamos a hacer lo básico aquí, crea un proyecto.
Nombraremos nuestro proyecto como primos.
Así que vayamos
al nuevo proyecto y vayamos a la aplicación de consola.
Y lo vamos a nombrar primos.
Di siguiente, no vamos para utilizar este compilador.
Estaba jugando con compiladores Quiero asegurarme de tener el
compilador correcto. simplemente use el compilador cygwin.
Entonces está generando mi principal archivo de origen y está vacío.
Vamos a deshacernos de la printf y empieza a escribir código.
Vamos a incluir un archivo llamado toro estándar.
No he hecho esto todavía; He estado creando mis booleanos como guiones bajos.
Hagamos una pequeña prueba Quiero poder hacer bool.
Entonces ahora podemos usar bools.
Entonces, normalmente en C89, el tipo de datos para verdadero o falso es subrayado bool.
Pero en realidad puedes tener un tipo definición en versiones posteriores y en el archivo
bool estándar para solo use bools y también le permite
usar verdadero falso como valores.
Entonces tenemos que crear algunos variables aquí primero.
Vamos a crear nuestro contador que solo vamos a nombrar p.
Ese va a ser nuestro contador para nuestro ciclo desde
que comprobamos desde p hasta 100 números.
Ese será nuestro bucle externo.
También vamos a crear un variable para nuestro contador de bucle interno.
Aquí es donde comprobamos nuestros primos anteriores.
En realidad, no lo inicializaremos aquí lo inicializaremos en el ciclo.
Vamos a crear nuestra matriz que será un número entero de
números primos y será de tamaño 50.
Y no vamos a inicializar a cualquier cosa menos 0 por ahora.
Y luego crearemos un índice primo, y esto nos
ayudará a omitir todos nuestros números pares, y solo vamos a establecerlo en 2.
Esta variable en realidad va para asegurarnos de
que comenzamos en el índice correcto porque vamos para codificar los primeros 2 números.
Eso es lo que haremos primero.
Vamos a codificar nuestros 2 primeros números primos.
Así es como podemos acceder a array.
Sabemos cómo crear una matriz en línea. 10, simplemente especifique el tipo de
datos seguido del nombre y luego en el corchetes especificamos el tamaño.
Y luego estamos inicializando todo a 0, este es un
rasgo C99 que podemos hacer.
Y para asignar datos a una matriz, Solo puedo decir el nombre de la matriz y
luego el valor del índice.
Recuerde, las matrices se basan en 0.
Así que voy a decir prime sub-0.
Y el primer primo será 2.
2 es el primer número primo.
El segundo número primo es va a ser igual a 3.
De esta manera tengo algo de
prima números que puedo probar previamente para encontrar primos adicionales.
Y ahora viene nuestro bucle.
Vamos a necesitar exterior para bucle que pasa por todos los
números del 5 al 100.
Sabemos que 4 no es un número primo así que estoy empezando a las 5.
Entonces podemos decir que 4 p es igual a 5, p es menor o igual que 100 y luego vamos
a saltarnos los números pares.
Entonces vamos a decir p es igual a p más 2.
No necesitamos buscar números, ese será nuestro bucle externo.
Y de nuevo, deberías estar probando a medida que avanza.
Ahora también vamos a establecer una variable booleana que nos dirá si o
no encontramos un número primo.
Entonces aquí es donde puedo usar bool, y solo voy a
crear una variable local Boolean es primo.
Voy a tener eso inicializado decir que es cierto porque solo lo estableceré en falso
si he revisó la lista completa de primos generados
previamente o Llegué al último número primo y me aseguro de que no sea la
raíz cuadrada.
Entonces lo principal va a ser igual a verdadero para cada
iteración de 5 a 100 omitiendo 2.
Ahora mi bucle interior se va a ir a través de todos nuestros números primos
que hemos generado previamente.
Haz que no nos hayamos vuelto mejores que la raíz cuadrada de la I.
Así que vamos a pasar por todos los números hasta llegar a la raíz cuadrada, que puede
ser nuestra condición x.
También vamos a salir si encontramos un número primo.
Entonces vamos a decir si es primo es cierto y
hemos superado nuestro límite, que será p dividido por primo sub-I es mayor
o igual que primos sub-I.
Y luego vamos a más más I es nuestra variable de control de bucle.
Este es realmente el clave del algoritmo.
Entonces vamos a intentar encuentre todos nuestros
números primos del 5 al 100 omitiendo números pares.
Y luego, en nuestro bucle interno, estamos vamos a
empezar en 1, vamos a ir hasta el final hasta que establezcamos es primordial a verdadero o hemos alcanzado nuestra condición
de salida, que es la el número p dividido por sub-I primo es mayor que sub-I
primo, y eso es esencialmente terminando para hacer nuestro cuando encontramos una raíz cuadrada
porque eso es otra condición del algoritmo.
Si ese es nuestro bucle, por dentro de nuestro bucle, vamos
a comprobar si hay primos.
La forma en que un número es primo ¿Lo divides por el número?
Y si no tienes un 0, entonces estás listo.
Entonces puedes hacer un mod p primo sub-I es igual a 0.
Y si eso es cierto, entonces no
tienes un número primo.
Entonces puedes configurar el Booleano igual a falso.
Y luego eso es lo que hacemos durante todo el ciclo porque todo lo
que estamos haciendo es ir para establecer el booleano en falso.
Y eso nos dirá que no lo hicimos encontrar un número primo, por lo que
no queremos agregar p a nuestra matriz de primos.
De acuerdo, lo último que debemos hacer es compruebe si el booleano se estableció en verdadero,
si se estableció en verdadero, entonces queremos completar nuestra matriz.
Queremos agregarlo a la matriz. Entonces estamos sumando a las matrices encontramos primo.
Así que solo decimos números primos y luego decimos índice principal.
Porque, recuerda, este es el que está realmente representado por el índice
de dónde queremos poner la matriz, que queremos comenzar en el elemento 3, que es
el índice 2.
Así que queremos asegurarnos de ponerlo en el lugar correcto en la matriz,
y lo configuramos ap porque p era el número primo que encontramos porque recuerde que este es el bucle for externo.
Estamos intentando comprobar si ese es un número primo.
Empezamos a las 5.
Decimos que si 5 va a ser primo, si podemos ir a estos números comenzando en 1 y luego
compararlos con cualquier primos anteriores y si no es divisible por 0, entonces
estamos bien y tenemos que hacer eso para todo.
Y luego lo último que queremos hacer es solo
queremos incrementar ese índice principal.
Así que la próxima vez que encontremos un número, estamos en el índice correcto.
Y eso es todo.
Y este es el algoritmo para encontrar números primos.
Entonces quieres guardar eso y construir , asegúrese de que todo esté listo.
Estamos bien.
Entonces me gusta agregar el verdadero falso valores al incluir bool estándar, no
se olvide de eso.
Y luego lo último que lo que tenemos que hacer es
imprimir los números primos.
Así que podemos tener un bucle for simple.
Y los vamos a imprimir todos en la misma línea, por lo que no vamos
a agregar un salto de línea.
Entonces, lo que vamos a hacer es vamos a volver a crear una
instancia de nuestra variable de control de bucle a 0 I.
Vamos a ir hasta nuestro índice principal, que va a ser del
tamaño de todo en la matriz y simplemente imprímalo en una
sola línea, porcentaje I o D y primer sub-I.
Y luego, al final, agregaremos un salto de línea.
Algo así con punto y coma.
Pero de nuevo, cosas para aviso en este programa.
Primero, observe la sangría, todos los bloques están sangrados.
A veces usamos corchetes cuando tenemos más de una declaración dentro de
nuestros bloques, a veces no es así.
En esta declaración if en línea 25, no usamos corchetes.
Los bucles deben convertirse en algo de segunda naturaleza a estas alturas.
Realmente de lo que quieres ganar esta asignación son las matrices.
Entonces estamos creando una matriz llamada primos, configurándolo en tamaño 50, inicializando todo a 0.
Y luego estamos configurando el primero 2 elementos
a 2 y 3 y luego todo este algoritmo de 19 a las líneas 32 están
determinando si es primo mirando la matriz en los números primos anteriores.
Y también saltando cuando estás mayor que la raíz cuadrada.
Y de nuevo ves mucho corchetes aquí para acceder a las
matrices y asignar valores a matrices y todo,
es bastante sencillo.
Así que construyamos esto y mira lo que pasa.
No tenemos advertencias ni errores.
Si ejecutamos esto, lo que ves La salida son todos los números primos hasta 100
2 3 5 7 11 13 17 19 23 29 31 37 41 43 y así sucesivamente.
Todos esos son números primos.
Y el número primo es algo que solo era solo un factor de sí mismo.
No puedes dividir eso por ningún otro número y no tiene resto.
Entonces 97 los únicos 2 factores que entrar en eso son 1 y 97.
Así que, de nuevo, un pequeño programa rápido y agradable.
Proporcionaré la solución.
Puedes analizarlo.
Pero, de nuevo, conclusiones clave, todo sobre las matrices y también el bool estándar
que usé, que nos permitió crear tipos de datos booleanos
sin el subrayado en mayúsculas by también le permite utilizar valores
verdaderos falsos en lugar de 1 y 0.
Espero que esto ayude. Gracias.