1 00:00:00,000 --> 00:00:02,000 A mí me ha salido, pero no sé... 2 00:00:02,560 --> 00:00:03,299 ¿Pero de casualidad? 3 00:00:03,560 --> 00:00:04,580 No, o sea... 4 00:00:04,580 --> 00:00:05,419 Ah, pues estupendo. 5 00:00:06,240 --> 00:00:08,000 Pero no comenté en el código que... 6 00:00:08,640 --> 00:00:09,800 Uy, pues entonces de casualidad. 7 00:00:10,580 --> 00:00:11,800 Venga, a ver, vamos. 8 00:00:12,699 --> 00:00:14,820 Juanjo, luego lo comentáis o lo que sea. 9 00:00:15,660 --> 00:00:18,219 Vale, pues entonces, una vez primero, lo de siempre. 10 00:00:18,920 --> 00:00:20,839 Hay que entender qué es lo que nos piden. 11 00:00:21,660 --> 00:00:23,519 Nos piden decir si un... 12 00:00:23,519 --> 00:00:24,160 No, perdón. 13 00:00:24,940 --> 00:00:27,559 El ejercicio es más complicado que ese. 14 00:00:27,620 --> 00:00:28,960 No es decir si un número es primo o no. 15 00:00:30,000 --> 00:00:32,479 Lo que dice es, pide un número. 16 00:00:33,140 --> 00:00:35,200 Y ahora, recorre todos los inferiores. 17 00:00:35,420 --> 00:00:36,259 Hasta ahí está claro. 18 00:00:36,859 --> 00:00:40,039 Pedimos un número y un bucle que va pasando por una variable 19 00:00:40,039 --> 00:00:43,740 que inicialmente es n, pero luego se decrementa para ser n-1, 20 00:00:43,880 --> 00:00:45,500 pero luego se decrementa para ser n-2. 21 00:00:45,960 --> 00:00:47,020 Hasta ahí está claro, ¿no? 22 00:00:47,539 --> 00:00:49,200 Este es 23. 23 00:00:51,509 --> 00:00:51,850 Este. 24 00:00:52,350 --> 00:00:52,549 Vale. 25 00:00:53,250 --> 00:00:59,530 Entonces, pedimos un número. 26 00:00:59,530 --> 00:01:02,570 Y ahora 27 00:01:02,570 --> 00:01:04,409 El primer bucle está claro 28 00:01:04,409 --> 00:01:06,170 Tenemos que comprobar algo 29 00:01:06,170 --> 00:01:08,909 Con ese número y todos los inferiores a él 30 00:01:08,909 --> 00:01:09,310 ¿Verdad? 31 00:01:10,349 --> 00:01:12,250 Pues entonces esto está claro 32 00:01:12,250 --> 00:01:14,189 Que tendremos un bucle 33 00:01:14,189 --> 00:01:16,349 En el que iremos haciendo cosas 34 00:01:16,349 --> 00:01:19,030 Ya sé que me sobrarían variables 35 00:01:19,030 --> 00:01:20,310 Y todo eso, pero bueno 36 00:01:20,310 --> 00:01:22,129 Que iremos haciendo cosas 37 00:01:22,129 --> 00:01:23,930 Con todos los X 38 00:01:23,930 --> 00:01:28,049 ¿Qué pasa? 39 00:01:29,530 --> 00:01:36,950 vale, entonces 40 00:01:36,950 --> 00:01:38,349 esta es la primera idea 41 00:01:38,349 --> 00:01:40,849 la primera estructura del ejercicio es 42 00:01:40,849 --> 00:01:42,549 a mi me dan un número n 43 00:01:42,549 --> 00:01:44,370 pues tengo que comprobar cosas 44 00:01:44,370 --> 00:01:47,329 con ese n, pero también con n-1 45 00:01:47,329 --> 00:01:48,609 y también con n-2 46 00:01:48,609 --> 00:01:49,810 y también con n-3 47 00:01:49,810 --> 00:01:51,549 luego es un primer bucle 48 00:01:51,549 --> 00:01:54,629 en el cual voy viendo que pasa 49 00:01:54,629 --> 00:01:55,769 con cada x 50 00:01:55,769 --> 00:01:57,209 siendo x 51 00:01:57,209 --> 00:02:00,349 inicialmente n y luego ya 52 00:02:00,349 --> 00:02:01,689 decrementándolo de 1 en 1 53 00:02:01,689 --> 00:02:05,010 Entonces, ¿este bucle cuándo se va a dejar de ejecutar? 54 00:02:05,450 --> 00:02:07,109 Pues cuando ya he comprobado todos. 55 00:02:07,469 --> 00:02:12,090 Es decir, mientras x sea mayor o igual que 1. 56 00:02:12,710 --> 00:02:12,909 ¿Vale? 57 00:02:14,490 --> 00:02:16,629 Entonces, la primera estructura del programa es ese. 58 00:02:17,189 --> 00:02:18,909 Yo tengo que mirar algo con la n. 59 00:02:19,289 --> 00:02:21,330 Y luego también tengo que mirarlo con la n-1. 60 00:02:21,430 --> 00:02:22,449 Y luego con la n-2. 61 00:02:22,530 --> 00:02:23,569 Y luego con la n-3. 62 00:02:24,110 --> 00:02:25,129 Así hasta 1. 63 00:02:25,569 --> 00:02:25,789 Vale. 64 00:02:26,590 --> 00:02:27,889 Ahora ya tenemos la estructura. 65 00:02:28,210 --> 00:02:30,469 Nos queda este agujero negro ahí. 66 00:02:30,469 --> 00:02:32,870 vale, pues con cada uno de esos x 67 00:02:32,870 --> 00:02:34,849 con cada uno de esos x que van siendo 68 00:02:34,849 --> 00:02:36,729 desde n hasta 1 69 00:02:36,729 --> 00:02:38,349 con cada uno de esos, ¿qué tengo que hacer? 70 00:02:39,289 --> 00:02:40,569 pues con cada uno de esos 71 00:02:40,569 --> 00:02:42,629 tengo que mostrarlo 72 00:02:42,629 --> 00:02:44,750 si es primo, y si no es primo, nada 73 00:02:44,750 --> 00:02:46,949 entonces lo que tengo que hacer 74 00:02:46,949 --> 00:02:48,530 con eso es 75 00:02:48,530 --> 00:02:50,370 si x es primo, mostrarlo 76 00:02:50,370 --> 00:02:51,030 y si no, nada 77 00:02:51,030 --> 00:02:54,370 ¿vale? es decir 78 00:02:54,370 --> 00:02:55,310 podría algo así 79 00:02:55,310 --> 00:02:57,669 si x es primo 80 00:02:57,669 --> 00:03:01,280 lo muestro 81 00:03:01,280 --> 00:03:03,180 entonces seguimos 82 00:03:03,180 --> 00:03:05,180 pues perfilando nuestro 83 00:03:05,180 --> 00:03:06,360 programa, ¿verdad? 84 00:03:10,810 --> 00:03:13,030 vale, mi programa es este, si x es primo 85 00:03:13,030 --> 00:03:14,969 lo muestro, bueno, pero claro 86 00:03:14,969 --> 00:03:16,909 me falta esto, ¿cuál es la condición 87 00:03:16,909 --> 00:03:18,090 para esos números primo o no? 88 00:03:18,969 --> 00:03:21,150 pues ya me puedo yo empezar ahí a quebrar la cabeza 89 00:03:21,150 --> 00:03:22,870 buscando con and, con or, a ver si 90 00:03:22,870 --> 00:03:24,909 encuentro una condición que exprese que el número es primo 91 00:03:24,909 --> 00:03:26,289 no la voy a encontrar 92 00:03:26,289 --> 00:03:29,069 bueno, una 93 00:03:29,069 --> 00:03:30,310 función, sí, una función 94 00:03:30,310 --> 00:03:33,229 para ver si es primo o no, no creo que exista esa función 95 00:03:33,229 --> 00:03:35,509 Porque no te funcionaría para todos 96 00:03:35,509 --> 00:03:37,750 A partir de un número de 41 millones de dígitos 97 00:03:37,750 --> 00:03:38,590 No te funcionaría 98 00:03:38,590 --> 00:03:41,729 Pero vamos, que igual existe 99 00:03:41,729 --> 00:03:42,610 No lo sé 100 00:03:42,610 --> 00:03:45,050 Vale, entonces 101 00:03:45,050 --> 00:03:47,250 Si nos dijeran mostrar los pares 102 00:03:47,250 --> 00:03:48,650 Uy, ya el programa habría acabado 103 00:03:48,650 --> 00:03:50,110 Porque esta condición facilísima 104 00:03:50,110 --> 00:03:51,830 X por 102 igual a 0 105 00:03:51,830 --> 00:03:54,349 Que nos dicen mostrar los múltiplos de 5 106 00:03:54,349 --> 00:03:56,050 Estupendo 107 00:03:56,050 --> 00:03:57,629 Porque esta condición sería 108 00:03:57,629 --> 00:03:59,169 X por 105 igual a 0 109 00:03:59,169 --> 00:04:01,870 Pero es que la condición que nos han dado 110 00:04:01,870 --> 00:04:02,969 Es más complicada que esa 111 00:04:02,969 --> 00:04:04,389 es x es primo 112 00:04:04,389 --> 00:04:05,949 pues no lo sé 113 00:04:05,949 --> 00:04:08,610 entonces voy a tener que hacer aquí cosas 114 00:04:08,610 --> 00:04:10,590 para averiguar 115 00:04:10,590 --> 00:04:12,909 qué expresión puedo poner aquí 116 00:04:12,909 --> 00:04:14,389 qué expresión puedo poner aquí 117 00:04:14,389 --> 00:04:15,669 para ver si es primo o no 118 00:04:15,669 --> 00:04:18,269 bueno pues aquí es donde se pueden haber ocurrido 119 00:04:18,269 --> 00:04:18,930 varias cosas 120 00:04:18,930 --> 00:04:22,490 por ejemplo, pues que le pasa a un número primo 121 00:04:22,490 --> 00:04:24,370 a un número primo le pasa 122 00:04:24,370 --> 00:04:26,189 que solo es divisible 123 00:04:26,189 --> 00:04:27,709 entre uno y sí mismo 124 00:04:27,709 --> 00:04:30,410 entonces la primera cosa que uno se le puede ocurrir es 125 00:04:30,410 --> 00:04:32,069 ah pues voy a contar 126 00:04:32,069 --> 00:04:32,870 sus divisores 127 00:04:32,870 --> 00:04:37,490 Porque ya sabemos contar, pues vamos a contar los divisores de ese número. 128 00:04:38,110 --> 00:04:44,230 Y ahora ya, si la cuenta de divisores es exactamente 2, pues es primo. 129 00:04:44,629 --> 00:04:47,389 Porque tendrá dos divisores, uno y sí mismo. 130 00:04:48,209 --> 00:04:50,649 Pues entonces, si consiguiéramos contar divisores, 131 00:04:52,980 --> 00:04:57,240 si consiguiéramos contar divisores, pues ya lo tendríamos. 132 00:04:57,699 --> 00:05:01,279 Y esa cuenta se guardará en cont. 133 00:05:01,279 --> 00:05:03,660 si consiguiéramos contar divisores 134 00:05:03,660 --> 00:05:05,600 ya tendríamos esta condición 135 00:05:05,600 --> 00:05:07,959 que tanto nos agobiaba 136 00:05:07,959 --> 00:05:08,339 hecha 137 00:05:08,339 --> 00:05:11,920 si el número de divisores es 2 138 00:05:11,920 --> 00:05:13,819 lo muestro porque es primo 139 00:05:13,819 --> 00:05:15,740 y paso al siguiente 140 00:05:15,740 --> 00:05:17,259 vale 141 00:05:17,259 --> 00:05:19,279 entonces ya hemos traducido esto 142 00:05:19,279 --> 00:05:20,660 a un 143 00:05:20,660 --> 00:05:23,660 ya lo único que nos falta es algo 144 00:05:23,660 --> 00:05:24,740 que ya sabemos hacer 145 00:05:24,740 --> 00:05:26,839 que es una cuenta de algo 146 00:05:26,839 --> 00:05:28,319 ahora ya solo nos falta 147 00:05:28,319 --> 00:05:30,819 meter aquí, insertar aquí 148 00:05:30,819 --> 00:05:32,459 esta parte, solo nos falta eso 149 00:05:32,459 --> 00:05:34,800 ¿vale? estamos haciendo lo demás 150 00:05:34,800 --> 00:05:37,139 entonces siempre es buena idea 151 00:05:37,139 --> 00:05:38,899 irlo haciendo 152 00:05:38,899 --> 00:05:41,139 como yo os digo, de forma estructurada 153 00:05:41,139 --> 00:05:43,100 o jerárquica o modular, como lo queráis 154 00:05:43,100 --> 00:05:45,199 llamar, cuando una cosa es fácil 155 00:05:45,199 --> 00:05:46,759 pues uno a lo mejor le sale de corrido 156 00:05:46,759 --> 00:05:48,660 ah ya está, me sale de corrido, pero si no 157 00:05:48,660 --> 00:05:50,240 tenéis que pensar siempre así 158 00:05:50,240 --> 00:05:53,240 ¿no? lo primero que tengo que hacer es 159 00:05:53,240 --> 00:05:55,060 mirar algo con un 160 00:05:55,060 --> 00:05:56,699 numerito que empieza siendo n y se va 161 00:05:56,699 --> 00:05:58,860 decrementando? Pues ya está, tengo un primer bucle 162 00:05:58,860 --> 00:06:00,660 con un numerito 163 00:06:00,660 --> 00:06:02,360 x que empieza siendo n, 164 00:06:02,519 --> 00:06:04,319 lo voy decrementando y este bucle 165 00:06:04,319 --> 00:06:06,040 se va ejecutando mientras no le llego a la 1. 166 00:06:06,560 --> 00:06:08,439 Ahora, ¿qué tengo que hacer con ese numerito? 167 00:06:09,420 --> 00:06:10,879 Si cumple la condición, 168 00:06:11,139 --> 00:06:12,779 mostrar esto. Pues esto tendré que hacer. 169 00:06:12,899 --> 00:06:14,980 Vale, ahora vamos siguiendo. ¿Y esta condición cuál es? 170 00:06:15,860 --> 00:06:16,839 ¿La tengo directamente? 171 00:06:17,060 --> 00:06:18,860 Estupendo, la pongo. ¿Que no la 172 00:06:18,860 --> 00:06:20,860 tengo directamente? ¿Tendré que hacer 173 00:06:20,860 --> 00:06:22,899 algo antes para conseguir aquí 174 00:06:22,899 --> 00:06:24,420 ya una expresión que me permita 175 00:06:24,420 --> 00:06:27,259 tenerla? Bueno, pues en este caso 176 00:06:27,259 --> 00:06:29,480 hemos dicho, ah, pues mira, ya analizando 177 00:06:29,480 --> 00:06:31,259 el problema, ya analizando en qué consiste, 178 00:06:31,360 --> 00:06:33,259 decimos, el problema consiste en ver si un número 179 00:06:33,259 --> 00:06:35,439 es primo. ¿Cómo traduzco 180 00:06:35,439 --> 00:06:37,300 yo esto a cosas que 181 00:06:37,300 --> 00:06:39,120 conozco? Pues que tenga 182 00:06:39,120 --> 00:06:41,399 dos divisores. Vale, pues entonces 183 00:06:41,399 --> 00:06:42,819 voy a contar los divisores. 184 00:06:43,199 --> 00:06:44,240 Ahora ya nos falta hacer eso. 185 00:06:45,160 --> 00:06:47,019 Pues entonces, para contar los divisores 186 00:06:47,019 --> 00:06:49,360 de un numerito. Ahora ya esto lo planteamos 187 00:06:49,360 --> 00:06:50,860 como un programa independiente, 188 00:06:51,379 --> 00:06:52,959 como un trozo de código independiente de lo 189 00:06:52,959 --> 00:06:54,360 De lo de ahí 190 00:06:54,360 --> 00:06:56,480 Pues una cuenta 191 00:06:56,480 --> 00:06:57,600 Porque estamos contando 192 00:06:57,600 --> 00:06:58,939 Pues una cuenta 193 00:06:58,939 --> 00:07:02,060 Una cuenta siempre empieza con un contador a cero 194 00:07:02,060 --> 00:07:03,699 Así empieza una cuenta 195 00:07:03,699 --> 00:07:05,300 Y luego siempre hay un bucle 196 00:07:05,300 --> 00:07:08,819 Siempre hay un bucle en el que yo voy iterando por valores 197 00:07:08,819 --> 00:07:10,680 Y si esos valores 198 00:07:10,680 --> 00:07:12,399 Cumplen una condición, los cuento 199 00:07:12,399 --> 00:07:12,759 ¿Verdad? 200 00:07:13,300 --> 00:07:15,899 Una cuenta siempre viene a ser algo así 201 00:07:15,899 --> 00:07:18,139 Siempre viene a ser algo así 202 00:07:18,139 --> 00:07:20,199 Un contador que empieza valiendo cero 203 00:07:20,199 --> 00:07:21,500 En un bucle 204 00:07:21,500 --> 00:07:23,100 voy recorriendo 205 00:07:23,100 --> 00:07:26,000 los valores, los elementos 206 00:07:26,000 --> 00:07:28,279 voy recorriendo los elementos que quiero contar 207 00:07:28,279 --> 00:07:29,819 y por cada elemento 208 00:07:29,819 --> 00:07:32,180 miro a ver si cumple la condición para que lo cuente 209 00:07:32,180 --> 00:07:34,259 eso es una cuenta en última instancia 210 00:07:34,259 --> 00:07:35,439 ¿no? esto de aquí 211 00:07:35,439 --> 00:07:37,920 bueno, pues ahora ya seguimos pensando 212 00:07:37,920 --> 00:07:40,339 a ver, ¿qué valores tenemos que recorrer? 213 00:07:41,240 --> 00:07:42,519 tenemos que recorrer 214 00:07:42,519 --> 00:07:43,879 todos los números 215 00:07:43,879 --> 00:07:45,160 inferiores a x 216 00:07:45,160 --> 00:07:47,860 ¿vale? estamos mirando, lo que vamos a mirar aquí 217 00:07:47,860 --> 00:07:49,620 es ver si x es primo 218 00:07:49,620 --> 00:07:54,740 Es decir, vamos a contar los divisores de X 219 00:07:54,740 --> 00:07:56,000 Esto es lo que estamos haciendo 220 00:07:56,000 --> 00:07:58,680 Vamos a contar los divisores de X 221 00:07:58,680 --> 00:08:01,779 ¿Por qué elementos tenemos que pasar? 222 00:08:02,459 --> 00:08:06,060 Tenemos que pasar por todos los números entre 1 y X 223 00:08:06,060 --> 00:08:09,639 Y por cada uno de ellos 224 00:08:09,639 --> 00:08:12,339 Mirar a ver si divide de forma exacta a X 225 00:08:12,339 --> 00:08:14,959 Si lo divide, lo sumo 226 00:08:14,959 --> 00:08:17,540 ¿Vale? Pues entonces los elementos por los que tenemos que pasar 227 00:08:17,540 --> 00:08:19,800 llamémosle por ejemplo n 228 00:08:19,800 --> 00:08:22,120 lo podemos inicializar a 1 229 00:08:22,120 --> 00:08:24,220 y aquí 230 00:08:24,220 --> 00:08:26,459 este elemento 231 00:08:26,459 --> 00:08:27,439 se va incrementando 232 00:08:27,439 --> 00:08:32,970 vale, ¿qué hago con cada n? 233 00:08:33,090 --> 00:08:34,769 empieza siendo 1 y lo voy incrementando 234 00:08:34,769 --> 00:08:37,649 con cada n miro a ver si divide de forma exacta 235 00:08:37,649 --> 00:08:38,250 a x 236 00:08:38,250 --> 00:08:43,360 entonces, si ocurre esto 237 00:08:43,360 --> 00:08:45,179 n es divisor 238 00:08:45,179 --> 00:08:47,120 pues lo cuento 239 00:08:47,120 --> 00:08:50,840 ¿eh? 240 00:08:56,889 --> 00:08:58,289 ¿cómo que pongo 1? bueno, es que 241 00:08:58,289 --> 00:09:02,289 Tengo que pasar por todos los n entre 1 y x, ¿vale? 242 00:09:02,669 --> 00:09:04,590 Entonces, yo aquí tengo que pasar por todos los n. 243 00:09:04,870 --> 00:09:06,370 n empieza valiendo 1. 244 00:09:07,610 --> 00:09:09,929 Es divisor de x, lo cuento. 245 00:09:10,210 --> 00:09:11,309 Y me voy al siguiente. 246 00:09:12,049 --> 00:09:13,710 Es divisor de x y lo cuento. 247 00:09:14,169 --> 00:09:15,450 Entonces, la cuenta siempre es esto. 248 00:09:15,990 --> 00:09:17,149 La cuenta empieza a 0. 249 00:09:17,509 --> 00:09:18,529 La cuenta empieza a 0. 250 00:09:18,990 --> 00:09:21,990 Un bucle que me va a servir para recorrer los elementos. 251 00:09:22,590 --> 00:09:26,009 Y luego dentro de ese bucle yo contaré de esos elementos lo que me interesan. 252 00:09:26,409 --> 00:09:28,169 Entonces, los elementos son este n. 253 00:09:28,289 --> 00:09:30,289 Empieza siendo 1 y se va incrementando 254 00:09:30,289 --> 00:09:32,929 Para cada n miro a ver si cumple 255 00:09:32,929 --> 00:09:35,009 Ser divisor, si lo cumple lo cuento 256 00:09:35,009 --> 00:09:37,049 Y ya solo me falta 257 00:09:37,049 --> 00:09:38,649 Este bucle cuando va a parar 258 00:09:38,649 --> 00:09:44,830 Este bucle va a parar 259 00:09:44,830 --> 00:09:46,710 Cuando este numerito n 260 00:09:46,710 --> 00:09:48,649 Ya haya llegado 261 00:09:48,649 --> 00:09:49,889 A ser x 262 00:09:49,889 --> 00:09:51,690 Mientras este numerito n 263 00:09:51,690 --> 00:09:54,710 Sea menor o igual que x 264 00:09:54,710 --> 00:09:58,419 Entras 265 00:09:58,419 --> 00:10:01,299 para que entre para 1 y entre para 2 266 00:10:01,299 --> 00:10:03,460 y entre para 3 y entre para x 267 00:10:03,460 --> 00:10:05,620 para el x más 1 ya no va a entrar 268 00:10:05,620 --> 00:10:07,940 entonces este bucle 269 00:10:07,940 --> 00:10:09,679 para todos los valores 270 00:10:09,679 --> 00:10:11,980 entre el 1 inicial y el x 271 00:10:11,980 --> 00:10:14,080 que es el último para el cual ya no entraría 272 00:10:14,080 --> 00:10:15,539 para el cual ya no entraría 273 00:10:15,539 --> 00:10:16,519 para todos ellos 274 00:10:16,519 --> 00:10:19,960 pues entra, mira a ver si es divisor 275 00:10:19,960 --> 00:10:20,539 y lo cuenta 276 00:10:20,539 --> 00:10:22,539 y nos vamos al siguiente 277 00:10:22,539 --> 00:10:24,220 ¿sigue siendo menor o igual que x? 278 00:10:24,340 --> 00:10:27,120 sí, entro, miro a ver si es divisor y lo cuento 279 00:10:27,120 --> 00:10:28,539 Y lo incremento 280 00:10:28,539 --> 00:10:29,840 ¿Sigue siendo menor o igual que x? 281 00:10:29,960 --> 00:10:32,179 Sí, entro, miro a ver si es divisor y lo cuento 282 00:10:32,179 --> 00:10:33,840 Luego hemos hecho un bucle 283 00:10:33,840 --> 00:10:35,899 Nos hemos hecho aquí una estructura de cuenta 284 00:10:35,899 --> 00:10:39,200 Que en realidad es una cosa atómica 285 00:10:39,200 --> 00:10:40,480 Es independiente del resto del programa 286 00:10:40,480 --> 00:10:41,519 Yo la he tenido que meter ahí 287 00:10:41,519 --> 00:10:44,500 Porque en ese momento me interesaba contar divisores de x 288 00:10:44,500 --> 00:10:47,200 Pues contar divisores de x es esto 289 00:10:47,200 --> 00:10:48,519 Y ya está 290 00:10:48,519 --> 00:10:51,419 Pues ahí es donde me encaja meterlo 291 00:10:51,419 --> 00:10:52,059 Pues ahí 292 00:10:52,059 --> 00:10:54,700 Vale, pues ya está 293 00:10:54,700 --> 00:11:03,279 Ahora ya, cuando este bucle haya acabado, ya sabemos que cont va a tener el número de divisores de x. 294 00:11:03,559 --> 00:11:06,179 Porque para eso hemos hecho esto, para contarlo. 295 00:11:06,580 --> 00:11:07,000 Pues ya está. 296 00:11:07,940 --> 00:11:11,399 Si el número de divisores es 2, es primo. 297 00:11:11,779 --> 00:11:12,200 Lo muestro. 298 00:11:12,940 --> 00:11:13,460 Y se acabó. 299 00:11:13,980 --> 00:11:14,799 Y no tengo más que hacer. 300 00:11:14,980 --> 00:11:16,000 Y me voy al siguiente. 301 00:11:19,409 --> 00:11:19,889 Y ya está. 302 00:11:19,889 --> 00:11:23,190 Entonces lo he hecho 303 00:11:23,190 --> 00:11:25,830 Muy masticado 304 00:11:25,830 --> 00:11:27,830 Con lo cual aquí en realidad me podrían sobrar 305 00:11:27,830 --> 00:11:29,830 Estas variables, esta n me sobra 306 00:11:29,830 --> 00:11:31,309 Porque podría usar el propio x 307 00:11:31,309 --> 00:11:33,230 Ah bueno no podría pero luego te voy a mostrar aquí 308 00:11:33,230 --> 00:11:35,970 Vale pero lo podría más compacto 309 00:11:35,970 --> 00:11:37,789 Otro enfoque, vamos a probarlo primero 310 00:11:37,789 --> 00:11:38,389 Otro enfoque 311 00:11:38,389 --> 00:11:39,509 Pues 312 00:11:39,509 --> 00:11:42,490 El que has hecho tú 313 00:11:42,490 --> 00:11:46,149 A ver porque estamos comprobando 314 00:11:46,149 --> 00:11:47,289 Todos los números 315 00:11:47,289 --> 00:11:50,250 desde 1 hasta el x incluido 316 00:11:50,250 --> 00:11:52,250 entonces tú entras en este bucle 317 00:11:52,250 --> 00:11:53,990 mientras n sea menor o igual 318 00:11:53,990 --> 00:11:55,450 para el x entras 319 00:11:55,450 --> 00:11:57,450 a ver, podríais cambiar este código 320 00:11:57,450 --> 00:11:59,570 con n partiendo 2 321 00:11:59,570 --> 00:12:01,090 y que no entre para el x 322 00:12:01,090 --> 00:12:04,210 entonces esto sería 0 323 00:12:04,210 --> 00:12:06,350 porque si yo cambio el bucle 324 00:12:06,350 --> 00:12:08,490 poniendo aquí 2 y aquí menor que x 325 00:12:08,490 --> 00:12:09,889 me va a entrar solo 326 00:12:09,889 --> 00:12:11,269 para todos los números comprendidos 327 00:12:11,269 --> 00:12:12,429 entre 2 y x menos 1 328 00:12:12,429 --> 00:12:15,269 y entre 2 y x menos 1 329 00:12:15,269 --> 00:12:17,769 yo debería contar cero divisores 330 00:12:17,769 --> 00:12:19,509 para que fuera primo, ¿no? 331 00:12:19,990 --> 00:12:20,990 Si me dan el 7, 332 00:12:22,110 --> 00:12:23,950 con el bucle tal y como lo he planteado, 333 00:12:24,269 --> 00:12:25,250 tal y como lo he planteado, 334 00:12:25,350 --> 00:12:26,549 me va a entrar en este bucle 335 00:12:26,549 --> 00:12:30,470 para desde el 2 hasta el 6. 336 00:12:31,549 --> 00:12:33,250 Entonces, desde el 2 hasta el 6, 337 00:12:33,470 --> 00:12:34,929 la cuenta me tiene que haber salido 338 00:12:34,929 --> 00:12:37,090 cero divisores, ¿vale? 339 00:12:37,809 --> 00:12:39,990 Pero si entramos desde el 1 hasta el x, 340 00:12:40,210 --> 00:12:41,610 la cuenta me tiene que haber salido 2, 341 00:12:41,730 --> 00:12:43,129 porque el 1 y el x 342 00:12:43,129 --> 00:12:45,169 siempre van a ser divisores. 343 00:12:45,269 --> 00:12:47,769 entonces pues 344 00:12:47,769 --> 00:12:48,929 me da igual 345 00:12:48,929 --> 00:12:51,710 o pongo aquí 2 y menor que x 346 00:12:51,710 --> 00:12:53,710 y así me ahorro 347 00:12:53,710 --> 00:12:54,649 dos iteraciones 348 00:12:54,649 --> 00:12:56,669 con lo cual esto lo cambio a 0 349 00:12:56,669 --> 00:12:59,370 o lo dejamos como lo teníamos antes 350 00:12:59,370 --> 00:13:01,629 da lo mismo, la única diferencia es que 351 00:13:01,629 --> 00:13:02,590 de esta manera 352 00:13:02,590 --> 00:13:04,889 hago dos iteraciones menos 353 00:13:04,889 --> 00:13:06,549 la del 1 y la del x 354 00:13:06,549 --> 00:13:08,610 ¿si o no? 355 00:13:09,269 --> 00:13:09,470 no 356 00:13:09,470 --> 00:13:12,289 que no hombre, que no 357 00:13:12,289 --> 00:13:14,789 da para esto y más 358 00:13:14,789 --> 00:13:20,409 A ver, te da igual 359 00:13:20,409 --> 00:13:23,309 Vamos a contar divisores 360 00:13:23,309 --> 00:13:24,730 Imagínate que tienes el número 7 361 00:13:24,730 --> 00:13:25,750 X es 7 362 00:13:25,750 --> 00:13:28,570 Vale, pues entonces 363 00:13:28,570 --> 00:13:30,350 Si tú cuentas los divisores 364 00:13:30,350 --> 00:13:32,350 Entre 1 y 7 365 00:13:32,350 --> 00:13:34,649 Y el número es primo, te van a dar 2 366 00:13:34,649 --> 00:13:35,789 1 y 7 367 00:13:35,789 --> 00:13:37,649 Porque 2 siempre tiene 368 00:13:37,649 --> 00:13:40,149 Entonces, ¿para qué contar el 1 y el 7? 369 00:13:40,250 --> 00:13:41,509 Ni los incluyamos en la cuenta 370 00:13:41,509 --> 00:13:43,690 Si esos dos ya sabemos que son divisores 371 00:13:43,690 --> 00:13:46,009 ya lo sabemos, pues vamos a hacer la cuenta 372 00:13:46,009 --> 00:13:47,669 entre el 2 y el 6 373 00:13:47,669 --> 00:13:49,990 por eso n empieza 374 00:13:49,990 --> 00:13:50,649 siendo 2 375 00:13:50,649 --> 00:13:52,669 y salgo del bucle 376 00:13:52,669 --> 00:13:56,210 una vez antes de haber llegado al x 377 00:13:56,210 --> 00:13:58,049 entonces mi bucle 378 00:13:58,049 --> 00:13:59,070 solo se ejecuta 379 00:13:59,070 --> 00:14:02,149 entre 2 y un valor 380 00:14:02,149 --> 00:14:04,009 anterior al x 381 00:14:04,009 --> 00:14:06,049 y ahí si exprimo 382 00:14:06,049 --> 00:14:07,389 la cuenta me tiene que salir 0 383 00:14:07,389 --> 00:14:09,210 ¿vale? 384 00:14:11,549 --> 00:14:12,149 entonces 385 00:14:12,149 --> 00:14:16,440 si ejecutamos esto 386 00:14:16,440 --> 00:14:19,519 todos los números primos 387 00:14:19,519 --> 00:14:20,759 por debajo del 8 388 00:14:20,759 --> 00:14:23,320 pues por debajo del 8 son el 389 00:14:23,320 --> 00:14:24,600 7, 5, 3, 2 390 00:14:24,600 --> 00:14:27,679 tal y como he hecho el programa, el 1 siempre me lo va 391 00:14:27,679 --> 00:14:28,679 a mostrar como 392 00:14:28,679 --> 00:14:31,299 como primo, aunque 393 00:14:31,299 --> 00:14:32,860 es un poco tonto porque el 1 394 00:14:32,860 --> 00:14:35,240 matemáticamente se define como no primo 395 00:14:35,240 --> 00:14:36,100 pero bueno, da igual 396 00:14:36,100 --> 00:14:39,000 que no te funciona, a ver Miguel 397 00:14:39,000 --> 00:14:40,600 que ha escrito mal, míraselo 398 00:14:40,600 --> 00:14:42,179 yo esto no me acuerdo 399 00:14:42,179 --> 00:14:45,200 Pablo, míraselo 400 00:14:45,200 --> 00:14:47,340 no, pero que será 401 00:14:47,340 --> 00:14:48,500 algo habrá copiado mal 402 00:14:48,500 --> 00:14:55,159 es porque n 403 00:14:55,159 --> 00:14:56,840 es divisor de x 404 00:14:56,840 --> 00:14:59,399 con lo cual toca contarle, porque es un divisor 405 00:14:59,399 --> 00:15:02,779 no, a ver 406 00:15:02,779 --> 00:15:04,940 tú no sabes si es primo, no 407 00:15:04,940 --> 00:15:07,220 hasta que no has mirado todos 408 00:15:07,220 --> 00:15:09,340 los números inferiores a él, y has comprobado 409 00:15:09,340 --> 00:15:11,580 con todos y cada uno de ellos que ninguno le divide 410 00:15:11,580 --> 00:15:13,960 solo por uno de estos if sueltos 411 00:15:13,960 --> 00:15:15,159 no puedes sacar ninguna conclusión 412 00:15:15,159 --> 00:15:17,720 la conclusión la vas a sacar cuando el well ya ha terminado 413 00:15:17,720 --> 00:15:19,639 y ya tienes la cuenta de todo 414 00:15:19,639 --> 00:15:21,279 ¿vale? 415 00:15:21,580 --> 00:15:24,299 si esto es 0, significa que ese es divisor 416 00:15:24,299 --> 00:15:29,299 vale 417 00:15:29,299 --> 00:15:37,919 a ver, no uses la palabra 418 00:15:37,919 --> 00:15:39,480 fórmula, esto es un código 419 00:15:39,480 --> 00:15:40,799 esto es un código 420 00:15:40,799 --> 00:15:42,340 que te permite 421 00:15:42,340 --> 00:15:44,159 esto es un código 422 00:15:44,159 --> 00:15:46,620 y este código es el código que te permite 423 00:15:46,620 --> 00:15:48,279 contar los divisores de X 424 00:15:48,279 --> 00:15:50,200 y si tú tienes los divisores 425 00:15:50,200 --> 00:15:51,960 pues ya sabes si es primo, ¿no? 426 00:15:52,899 --> 00:15:54,019 comparándolo con 0 427 00:15:54,019 --> 00:15:56,500 si tiene 0 divisores 428 00:15:56,500 --> 00:15:57,740 es primo 429 00:15:57,740 --> 00:16:00,080 la pregunta es 430 00:16:00,080 --> 00:16:02,919 que tenga 0 divisores 431 00:16:02,919 --> 00:16:04,340 0 divisores 432 00:16:04,340 --> 00:16:06,600 entre 2 y 1 inferior a él 433 00:16:06,600 --> 00:16:08,820 si es entre 1 y el mismo, 2 434 00:16:08,820 --> 00:16:13,100 ¿Vale? Esa es la definición de primo 435 00:16:13,100 --> 00:16:15,159 Que te dividan solamente 436 00:16:15,159 --> 00:16:16,620 Tú y la unidad 437 00:16:16,620 --> 00:16:19,039 Entonces si cuentas los divisores 438 00:16:19,039 --> 00:16:21,279 Entre tú y la unidad, te tienen que salir exactamente 2 439 00:16:21,279 --> 00:16:23,240 Si cuentas los divisores 440 00:16:23,240 --> 00:16:25,200 Entre 2 y x menos 2 441 00:16:25,200 --> 00:16:25,820 Tienen que salir 0 442 00:16:25,820 --> 00:16:30,529 Claro 443 00:16:30,529 --> 00:16:33,450 A ver, otra forma de hacer esto mismo 444 00:16:33,450 --> 00:16:35,309 Otra manera que a lo mejor es más 445 00:16:35,309 --> 00:16:36,809 Cómoda 446 00:16:36,809 --> 00:16:39,710 Otra forma que se os puede haber ocurrido 447 00:16:39,710 --> 00:16:41,470 Se os puede haber ocurrido 448 00:16:41,470 --> 00:16:46,350 A ver, vamos a hacer ejercicio 23B, versión 2. 449 00:16:51,049 --> 00:16:51,929 Vamos a ver. 450 00:16:55,110 --> 00:17:00,990 Venga, vamos a hacer ejercicio 23, versión 2. 451 00:17:06,410 --> 00:17:07,329 Este de aquí. 452 00:17:07,670 --> 00:17:09,069 A ver, reutilizo del código. 453 00:17:12,549 --> 00:17:13,990 Vuelvo a esta parte que estaba. 454 00:17:13,990 --> 00:17:16,410 vuelvo a esta parte que estaba 455 00:17:16,410 --> 00:17:20,920 aquí, vuelvo casi al principio 456 00:17:20,920 --> 00:17:21,660 ¿no? 457 00:17:22,859 --> 00:17:24,640 esta es la primera parte que teníamos 458 00:17:24,640 --> 00:17:26,539 leemos el numerito 459 00:17:26,539 --> 00:17:28,579 para todos los números 460 00:17:28,579 --> 00:17:31,019 desde n hasta 1 461 00:17:31,019 --> 00:17:32,579 decrementándose 462 00:17:32,579 --> 00:17:33,960 tenemos que ver si es primo o no 463 00:17:33,960 --> 00:17:36,400 esta es la condición que desconocemos 464 00:17:36,400 --> 00:17:38,720 ¿vale? o sea, hacemos reset 465 00:17:38,720 --> 00:17:40,640 a esta situación para ver 466 00:17:40,640 --> 00:17:42,920 otra forma de hacerlo que se nos podría haber ocurrido 467 00:17:42,920 --> 00:17:45,980 Sí, ¿vale? 468 00:17:46,059 --> 00:17:48,299 Estamos haciendo 23 versión 2 469 00:17:48,299 --> 00:17:51,779 Porque la 23 anterior ya funciona 470 00:17:51,779 --> 00:17:53,740 Y está estupenda y os ha convencido y está bien 471 00:17:53,740 --> 00:17:54,720 Vale 472 00:17:54,720 --> 00:17:56,819 23 versión 2 473 00:17:56,819 --> 00:17:58,359 Volvemos a este punto 474 00:17:58,359 --> 00:18:01,799 Vamos a ver, aquí de nuevo tengo que ver yo 475 00:18:01,799 --> 00:18:03,420 La condición de x es 476 00:18:03,420 --> 00:18:04,420 Primo 477 00:18:04,420 --> 00:18:06,900 Estábamos aquí 478 00:18:06,900 --> 00:18:09,460 Ni idea, ni idea de esta condición 479 00:18:09,460 --> 00:18:11,640 ¿Cuál será? Es que no soy capaz 480 00:18:11,640 --> 00:18:13,660 de expresarla con and, con or 481 00:18:13,660 --> 00:18:15,000 no soy capaz porque no existe 482 00:18:15,000 --> 00:18:17,559 si fuera capaz estaría estupendo 483 00:18:17,559 --> 00:18:19,660 porque yo la metería en un boolean 484 00:18:19,660 --> 00:18:20,819 es primo, ¿verdad? 485 00:18:21,519 --> 00:18:22,819 y aquí pondría esto 486 00:18:22,819 --> 00:18:28,589 vale, pues vamos a intentar construirlo 487 00:18:28,589 --> 00:18:29,930 construir este boolean 488 00:18:29,930 --> 00:18:31,890 vamos a hacerlo de otra manera 489 00:18:31,890 --> 00:18:34,390 al ejercicio anterior, el ejercicio anterior 490 00:18:34,390 --> 00:18:36,730 la filosofía era, cuento divisores 491 00:18:36,730 --> 00:18:38,650 y luego miro si esa cuenta 492 00:18:38,650 --> 00:18:40,450 me ha dado 2 o 0, depende 493 00:18:40,450 --> 00:18:41,470 esa es otra manera 494 00:18:41,470 --> 00:18:44,009 hemos tenido una baja de Andrea 495 00:18:44,009 --> 00:18:47,809 pero me habías dicho que no se podía hacer 496 00:18:47,809 --> 00:18:50,230 realmente un boolean para sacar los primos 497 00:18:50,230 --> 00:18:53,529 y una expresión con operadores 498 00:18:53,529 --> 00:18:55,130 con andior no se puede 499 00:18:55,130 --> 00:18:58,890 lo que yo he dicho es, vamos a ver si podemos construir aquí algo 500 00:18:58,890 --> 00:19:02,230 por programa que me lleve este boolean a true o false 501 00:19:02,230 --> 00:19:04,630 pero no una expresión con andior, esa no existe 502 00:19:04,630 --> 00:19:07,230 porque si tuviéramos una forma 503 00:19:07,230 --> 00:19:11,170 de darle valor a este boolean que fuera true cuando es primo 504 00:19:11,170 --> 00:19:12,069 me false cuando no, 505 00:19:12,769 --> 00:19:14,150 magnífico, la meto aquí. 506 00:19:16,029 --> 00:19:16,970 ¿Existe esa manera? 507 00:19:18,089 --> 00:19:19,369 Pues vamos a pensarlo, 508 00:19:19,450 --> 00:19:19,930 vamos a ver. 509 00:19:20,529 --> 00:19:23,029 ¿Os acordáis ayer cuando decíamos? 510 00:19:24,789 --> 00:19:26,250 ¿Os reís porque no os acordáis? 511 00:19:26,630 --> 00:19:27,130 No, pues sí. 512 00:19:28,349 --> 00:19:29,690 Muchos reímos por no llorar. 513 00:19:31,230 --> 00:19:32,609 No, que no, que no. 514 00:19:33,049 --> 00:19:35,009 A ver, no subestiméis 515 00:19:35,009 --> 00:19:35,950 vuestros cerebros. 516 00:19:36,109 --> 00:19:37,410 Yo ahora mismo estoy un poquito... 517 00:19:37,410 --> 00:19:41,029 O sea, hasta el que más sabe de la clase 518 00:19:41,029 --> 00:19:46,329 O sea, que no, que sois una clase lista, hombre, que no. 519 00:19:46,650 --> 00:19:55,890 A ver, si no confiáis en vosotros mismos, pues a ver, ¿os acordáis de ayer cuando dijimos 520 00:19:55,890 --> 00:20:01,710 tenemos como varios patrones de algoritmo aquí en la cabeza que aunque parezca que no ya los vais interiorizando? 521 00:20:02,269 --> 00:20:09,069 Y uno es, yo tengo que resolver un problema en el cual mi resultado final es saber si algo pasa o no pasa. 522 00:20:09,069 --> 00:20:10,829 ¿No os acordáis ayer? 523 00:20:11,289 --> 00:20:13,109 Acabamos con un ejercicio que era 524 00:20:13,109 --> 00:20:14,990 Dado no sé qué 525 00:20:14,990 --> 00:20:17,230 Dado un montón de notas 526 00:20:17,230 --> 00:20:19,269 Ver si hay algún suspenso 527 00:20:19,269 --> 00:20:21,329 Hicimos ese ejercicio, ¿verdad? 528 00:20:22,109 --> 00:20:24,269 Ese ejercicio es para saber si algo pasa o no pasa 529 00:20:24,269 --> 00:20:26,890 Anda, pues ver si algo pasa o no pasa 530 00:20:26,890 --> 00:20:28,750 Es mi problema de aquí 531 00:20:28,750 --> 00:20:30,950 Es ver si dado un X 532 00:20:30,950 --> 00:20:33,230 Ver si X es primo o no 533 00:20:33,230 --> 00:20:34,450 Es la misma idea 534 00:20:34,450 --> 00:20:37,390 Dado un X tengo que ver si es primo o no 535 00:20:37,390 --> 00:20:39,390 para meterlo en este boolean 536 00:20:39,390 --> 00:20:41,529 porque si consigo ver si es primo o no 537 00:20:41,529 --> 00:20:42,750 y meterlo en este boolean 538 00:20:42,750 --> 00:20:44,809 magnífico, ya tengo mi 539 00:20:44,809 --> 00:20:47,690 pero claro, pues de nuevo tengo aquí un problema a resolver 540 00:20:47,690 --> 00:20:49,490 que es saber si algo pasa o no pasa 541 00:20:49,490 --> 00:20:50,849 vale 542 00:20:50,849 --> 00:20:53,869 cuando planteamos esto ayer dijimos 543 00:20:53,869 --> 00:20:56,089 vale, para ver si algo pasa o no pasa 544 00:20:56,089 --> 00:20:57,710 siempre lo planteamos 545 00:20:57,710 --> 00:20:58,230 de una manera 546 00:20:58,230 --> 00:21:01,150 asumimos que por defecto no pasa 547 00:21:01,150 --> 00:21:03,410 por ejemplo, que por defecto esto es falso 548 00:21:03,410 --> 00:21:05,589 vale, o por defecto 549 00:21:05,589 --> 00:21:07,569 estrue. Luego depende del 550 00:21:07,569 --> 00:21:09,609 problema. Y ahora, nos ponemos a 551 00:21:09,609 --> 00:21:11,690 evaluar un montón 552 00:21:11,690 --> 00:21:13,490 de elementos para ver si 553 00:21:13,490 --> 00:21:15,230 alguno me hace cambiar de opinión. 554 00:21:16,589 --> 00:21:17,750 ¿Vale? El ejercicio de ayer era 555 00:21:17,750 --> 00:21:19,230 ver si hay algún suspenso. 556 00:21:19,829 --> 00:21:21,809 Nosotros de partida asumíamos 557 00:21:21,809 --> 00:21:23,569 que no había ninguno. Luego, ¿algún 558 00:21:23,569 --> 00:21:25,509 suspenso o falso? De partida no había 559 00:21:25,509 --> 00:21:27,789 ninguno. Falso. Y ahora 560 00:21:27,789 --> 00:21:29,670 ya nos poníamos a mirar las notas 561 00:21:29,670 --> 00:21:31,569 una por una. Con que alguna 562 00:21:31,569 --> 00:21:33,710 fuera suspensa, ya cambiamos de idea. 563 00:21:34,029 --> 00:21:34,609 Y poníamos 564 00:21:34,609 --> 00:21:36,509 algún suspenso a true 565 00:21:36,509 --> 00:21:38,950 pues esto es lo mismo, pero ha traducido 566 00:21:38,950 --> 00:21:40,950 nuestro problema, tenemos un numerito con un montón 567 00:21:40,950 --> 00:21:41,549 de divisores 568 00:21:41,549 --> 00:21:44,910 perdón, con un montón de divisores 569 00:21:44,910 --> 00:21:45,910 no, tenemos un numerito 570 00:21:45,910 --> 00:21:48,789 bueno, pues solo con que alguno de los 571 00:21:48,789 --> 00:21:51,130 inferiores a él, excluyendo 572 00:21:51,130 --> 00:21:53,009 el 1 y sí mismo, solo con que 573 00:21:53,009 --> 00:21:54,609 alguno de los comprendidos entre 2 y 574 00:21:54,609 --> 00:21:56,910 x menos 1, solo con que 575 00:21:56,910 --> 00:21:59,009 uno de ellos divida 576 00:21:59,009 --> 00:22:00,910 ya puedo concluir que es 577 00:22:00,910 --> 00:22:02,269 primo, es falso 578 00:22:02,269 --> 00:22:05,529 con lo cual vamos a asumir de partida 579 00:22:05,529 --> 00:22:06,690 que es primo, que es true 580 00:22:06,690 --> 00:22:09,130 y ahora voy a mirar todos y que ahora 581 00:22:09,130 --> 00:22:11,390 los inferiores, en cuanto alguno 582 00:22:11,390 --> 00:22:12,549 divida, cambio de idea 583 00:22:12,549 --> 00:22:15,269 es la misma idea de los suspensos de ayer 584 00:22:15,269 --> 00:22:17,289 pues venga, vamos a asumir 585 00:22:17,289 --> 00:22:18,410 que es primo, es true 586 00:22:18,410 --> 00:22:23,230 y ahora voy a buscar 587 00:22:23,230 --> 00:22:25,289 a ver si hay alguno que me haga cambiar 588 00:22:25,289 --> 00:22:27,450 de opinión, dentro de todos los inferiores a él 589 00:22:27,450 --> 00:22:29,710 ¿entre qué números tengo que mirar? 590 00:22:30,289 --> 00:22:31,750 entre 2 y x-1 591 00:22:32,289 --> 00:22:34,269 Porque 1 y x ya sé que lo van a dividir. 592 00:22:34,789 --> 00:22:38,509 Entonces, ahora tengo que recorrer todos los números entre 2 y x menos 1. 593 00:22:39,089 --> 00:22:42,269 Si alguno divide a x, ya está. 594 00:22:42,430 --> 00:22:42,990 Cambio de idea. 595 00:22:43,329 --> 00:22:44,690 He encontrado un divisor. 596 00:22:45,470 --> 00:22:46,210 Es primo falso. 597 00:22:46,849 --> 00:22:49,829 Igual que ayer cuando encontrábamos una nota suspensa, ya está. 598 00:22:49,970 --> 00:22:50,750 Cambiábamos de opinión. 599 00:22:50,869 --> 00:22:51,930 Algún suspenso, true. 600 00:22:52,109 --> 00:22:52,589 Cambiábamos. 601 00:22:53,369 --> 00:22:54,109 Pues aquí lo mismo. 602 00:22:54,789 --> 00:22:55,009 ¿Vale? 603 00:22:55,009 --> 00:23:12,660 Pues vamos a recorrer todos los números entre 2 y x menos 1 para ver si alguno divide a x, ¿verdad? 604 00:23:20,119 --> 00:23:28,880 Porque en cuanto encontremos 1 que divida a x es primo falso, ya no puede ser primo, ¿vale? 605 00:23:28,940 --> 00:23:32,900 Pues ahora ya esto es un bucle, esto ya sí que lo tenemos que saber hacer. 606 00:23:32,900 --> 00:23:35,880 Entonces esto nos lo podemos hacer más cómodo 607 00:23:35,880 --> 00:23:37,000 Con un for directamente 608 00:23:37,000 --> 00:23:38,900 Porque un for me da una variable 609 00:23:38,900 --> 00:23:40,099 Para trabajar 610 00:23:40,099 --> 00:23:43,039 Esta variable que empiece valiendo 2 611 00:23:43,039 --> 00:23:44,420 ¿Vale? 612 00:23:45,059 --> 00:23:47,599 Mientras sea menor o igual 613 00:23:47,599 --> 00:23:49,519 Que x menos 1 614 00:23:49,519 --> 00:23:53,599 Y la voy incrementando de 1 en 1 615 00:23:53,599 --> 00:23:55,539 ¿Vale? 616 00:23:56,099 --> 00:23:56,559 Pues 617 00:23:56,559 --> 00:24:02,000 Este for es un for 618 00:24:02,000 --> 00:24:04,400 donde la variable y va valiendo 619 00:24:04,400 --> 00:24:06,420 desde 2 a x menos 1 620 00:24:06,420 --> 00:24:07,940 justo lo que quería 621 00:24:07,940 --> 00:24:10,599 recorrer todos los números entre 2 y x menos 1 622 00:24:10,599 --> 00:24:11,440 justo lo que quería 623 00:24:11,440 --> 00:24:14,400 vale, pues que tengo que hacer con cada uno de estos y 624 00:24:14,400 --> 00:24:17,000 que van desde 2 hasta x menos 1 625 00:24:17,000 --> 00:24:17,720 que tengo que hacer 626 00:24:17,720 --> 00:24:19,779 ver si dividen a x 627 00:24:19,779 --> 00:24:22,599 porque si lo dividen ya está, cambio de idea 628 00:24:22,599 --> 00:24:23,539 es primo o falso 629 00:24:23,539 --> 00:24:26,380 pues entonces si el resto de dividir 630 00:24:26,380 --> 00:24:28,599 x entre y 631 00:24:28,599 --> 00:24:30,039 resulta que es 0 632 00:24:30,039 --> 00:24:32,819 Es decir, si y es divisor de x 633 00:24:32,819 --> 00:24:34,400 Cambie de opinión 634 00:24:34,400 --> 00:24:36,059 Es primo igual a 635 00:24:36,059 --> 00:24:36,900 Falso 636 00:24:36,900 --> 00:24:39,319 Porque encontré un divisor 637 00:24:39,319 --> 00:24:41,000 Y ya está, ya se ha acabado 638 00:24:41,000 --> 00:24:43,180 Ya he construido este boolean 639 00:24:43,180 --> 00:24:44,740 Pero lo he construido por programa 640 00:24:44,740 --> 00:24:46,160 No lo he construido con an y con or 641 00:24:46,160 --> 00:24:46,900 Porque no se puede 642 00:24:46,900 --> 00:24:48,920 ¿Vale? 643 00:24:49,440 --> 00:24:51,420 De partida asumo que no tiene divisores 644 00:24:51,420 --> 00:24:54,799 Empiezo a recorrer todos entre 2 645 00:24:54,799 --> 00:24:56,000 Y x menos 1 646 00:24:56,000 --> 00:24:59,180 Con que 1 sea divisor 647 00:24:59,180 --> 00:25:01,799 me basta eso ya para cambiar de idea. 648 00:25:02,319 --> 00:25:03,460 Me basta para cambiar de idea. 649 00:25:04,079 --> 00:25:04,539 Y se acabó. 650 00:25:05,900 --> 00:25:06,339 ¿Vale? 651 00:25:09,640 --> 00:25:11,380 Bueno, pues otra forma de plantearlo. 652 00:25:11,960 --> 00:25:14,440 En lugar de hacer una cuenta de divisores 653 00:25:14,440 --> 00:25:16,640 y luego ver si esa cuenta es igual a 2, 654 00:25:17,680 --> 00:25:19,099 pues lo planteo de otra manera. 655 00:25:19,519 --> 00:25:22,339 Con este algoritmo. 656 00:25:22,500 --> 00:25:24,819 Es decir, a ver, yo quiero ver si algo pasa o no pasa. 657 00:25:25,579 --> 00:25:27,380 Asumo que de partida ocurre. 658 00:25:27,859 --> 00:25:30,319 Y ahora voy a recorrer en un bucle elementos 659 00:25:30,319 --> 00:25:32,259 a ver si alguno me hace cambiar de idea 660 00:25:32,259 --> 00:25:37,299 en cuanto llegue un i que me hace cambiar de idea 661 00:25:37,299 --> 00:25:39,480 porque es divisor, he cambiado de idea 662 00:25:39,480 --> 00:25:43,220 entonces estamos aplicando todo el rato 663 00:25:43,220 --> 00:25:44,960 las mismas ideas, todo el rato lo mismo 664 00:25:44,960 --> 00:25:46,920 estructuras que ya conocemos todo 665 00:25:46,920 --> 00:25:48,339 pero claro, hay que hacerlo 666 00:25:48,339 --> 00:25:51,519 analizando previamente el problema en el que estoy 667 00:25:51,519 --> 00:25:52,359 y entendiéndolo 668 00:25:52,359 --> 00:25:55,259 porque la parte más complicada 669 00:25:55,259 --> 00:25:57,079 de programar es entender 670 00:25:57,079 --> 00:25:58,920 el problema en el que estoy 671 00:25:58,920 --> 00:26:01,119 y que se traduce 672 00:26:01,119 --> 00:26:03,220 Se traduce en contar divisores, se traduce en no sé qué 673 00:26:03,220 --> 00:26:04,799 Luego ya 674 00:26:04,799 --> 00:26:05,720 El código 675 00:26:05,720 --> 00:26:08,460 No tiene mayor dificultad 676 00:26:08,460 --> 00:26:10,940 Si uno lógicamente ha estudiado y ha memorizado 677 00:26:10,940 --> 00:26:11,960 Todo lo que tiene que memorizar 678 00:26:11,960 --> 00:26:15,259 Obviamente 679 00:26:15,259 --> 00:26:16,880 Pero eso lo damos por sentado 680 00:26:16,880 --> 00:26:18,160 Porque si no, sí que no hay nada que hacer 681 00:26:18,160 --> 00:26:20,819 Entender las cosas no es suficiente 682 00:26:20,819 --> 00:26:26,539 9, pues 9 683 00:26:26,539 --> 00:26:28,380 Vale, me ha funcionado esta versión, perdón 684 00:26:28,380 --> 00:26:36,500 Hombre, a ver, me estás diciendo 685 00:26:36,500 --> 00:26:38,019 Mi programa está mal por algo, depende 686 00:26:38,019 --> 00:26:39,380 Si ese algo es una tontería 687 00:26:39,380 --> 00:26:43,180 Se ve claro que es una tontería 688 00:26:43,180 --> 00:26:45,160 Vale, pero si ese algo es 689 00:26:45,160 --> 00:26:46,400 Que el programa pues no 690 00:26:46,400 --> 00:26:48,099 Es un error de bulto 691 00:26:48,099 --> 00:26:50,500 Claro, los errores hay de muchos tipos 692 00:26:50,500 --> 00:26:53,220 Dime 693 00:26:53,220 --> 00:26:56,720 Y menor a X 694 00:26:56,720 --> 00:26:59,700 ¿Y menor a X dónde? Ah, da igual 695 00:26:59,700 --> 00:27:02,259 aquí lo he puesto para que se vea más claro 696 00:27:02,259 --> 00:27:03,740 que vamos entre 2 y x menos 1 697 00:27:03,740 --> 00:27:06,720 pero y menor o igual que 698 00:27:06,720 --> 00:27:08,619 x menos 1 es lo mismo 699 00:27:08,619 --> 00:27:09,619 que y menor que x 700 00:27:09,619 --> 00:27:12,380 normalmente, normalmente se pone 701 00:27:12,380 --> 00:27:14,420 más así, se pone más así 702 00:27:14,420 --> 00:27:14,900 ¿vale? 703 00:27:17,059 --> 00:27:18,500 porque uno rápidamente ve 704 00:27:18,500 --> 00:27:20,660 que si es menor que x, el valor final al que llegas 705 00:27:20,660 --> 00:27:22,279 es a x menos 1, pero bueno 706 00:27:22,279 --> 00:27:24,339 yo lo he puesto para que quede más 707 00:27:24,339 --> 00:27:26,000 ¿vale? 708 00:27:28,220 --> 00:27:29,799 bueno, pues ala, ya tenemos este 709 00:27:29,799 --> 00:27:30,900 de los primos 710 00:27:30,900 --> 00:27:33,000 ¿subir? 711 00:27:34,460 --> 00:27:34,900 aquí 712 00:27:34,900 --> 00:27:43,700 ya te da igual, vale 713 00:27:43,700 --> 00:27:46,339 pero a ver 714 00:27:46,339 --> 00:27:48,980 ¿que hay algo que quieres ver aquí o no? 715 00:27:49,640 --> 00:27:50,720 ¿de aquí o de dónde? 716 00:27:53,059 --> 00:27:54,819 que pones un número y no para 717 00:27:54,819 --> 00:27:56,859 pues tienes que mirar las condiciones de los bucles 718 00:27:56,859 --> 00:27:58,400 algo a... 719 00:27:58,400 --> 00:28:00,759 no se te habrá olvidado poner esto, por ejemplo 720 00:28:00,759 --> 00:28:04,279 Uy, pues ha puesto más más 721 00:28:04,279 --> 00:28:05,900 No te va a parar nunca jamás 722 00:28:05,900 --> 00:28:07,900 Vale 723 00:28:07,900 --> 00:28:10,000 Eh, venga 724 00:28:10,000 --> 00:28:24,940 Ya he hecho ese 725 00:28:24,940 --> 00:28:27,440 Pues el 32, por ejemplo, se queda mucho más fácil 726 00:28:27,440 --> 00:28:27,839 Claro 727 00:28:27,839 --> 00:28:42,900 Venga, hacemos uno de cadenas y char que os gusta menos 728 00:28:42,900 --> 00:28:43,779 No 729 00:28:43,779 --> 00:28:46,799 Me gustaría que intentáreis vosotros en casa al fin de semana 730 00:28:46,799 --> 00:28:48,759 Que lo corregiremos aquí 731 00:28:48,759 --> 00:28:50,720 Lo haremos el de los números romanos, por ejemplo 732 00:28:50,720 --> 00:28:54,460 Le he dado un número, ponerlo en romano 733 00:28:54,460 --> 00:29:00,579 A ver, ahí tienes que ir 734 00:29:00,579 --> 00:29:02,359 Sabéis cómo funciona 735 00:29:02,359 --> 00:29:04,059 El sistema de numeración romano, ¿no? 736 00:29:05,019 --> 00:29:06,480 Pues tenéis que irle quitando 737 00:29:06,480 --> 00:29:07,579 Primero miles 738 00:29:07,579 --> 00:29:10,119 Tendrá... 739 00:29:10,119 --> 00:29:12,359 Pues bueno, le tendréis que ir restando mil 740 00:29:12,359 --> 00:29:13,640 Hasta que llegue a ser menor que mil 741 00:29:13,640 --> 00:29:15,880 Todas las restas que hayáis hecho será la cantidad de emes 742 00:29:15,880 --> 00:29:18,500 Luego le tendréis que ir restando cienes hasta que sea menor que cien 743 00:29:18,500 --> 00:29:19,400 Bueno, más o menos 744 00:29:19,400 --> 00:29:23,849 Sí, bueno, trasladar 745 00:29:23,849 --> 00:29:25,569 Le doy el 320 y que me lo escriba 746 00:29:25,569 --> 00:29:26,809 En Roma, ¿no? 747 00:29:27,130 --> 00:29:28,890 Claro, hay que recordar cómo funciona ese sistema 748 00:29:28,890 --> 00:29:30,529 Que a muchos se nos habrá olvidado 749 00:29:30,529 --> 00:29:31,930 Vale 750 00:29:31,930 --> 00:29:34,829 Venga, intentáis hacer ahora 751 00:29:34,829 --> 00:29:36,269 Un ratín este del 752 00:29:36,269 --> 00:29:40,059 Este de aquí 753 00:29:40,059 --> 00:29:43,200 Por ejemplo 754 00:29:43,200 --> 00:29:49,329 Pero ahora