Represente este pseudocodigo en un diagrama de flujo
Bueno aqui yo lo trate de hacer en raptor para que el programa corriera y me quedo como resultado este diagrama de flujo.

Que hace exactamente?
Pues la funcion del pseudocodigo y que esta representado en el diagrama, es saber si un numero es primo o no. Para esto tiene diferentes funciones el diagrama, tratare de explicar una por una:
Cuando se inicia el programa, se pide un valor "n"cualquiera. Este sera evaluado por la primera condicion: ((n%2)==0)
esto quiere decir, se saca ((n modulo 2)==0), si el resultado del numero n introducido es 0 entra por la parte verdadera donde la condicion
sera que si el residuo de la condicion anterior es 2 entonces el numero no es primo, si no es 2, es primo.
Cuando el ((n modulo 2)==0) sea falso, entrara a otras instrucciones. Al principio de las instrucciones se añade un valor i y este sera igual a 3. Luego se evalua un while con la condicion i<=raiz(n) (en raptor se escribiria: i>=sqrt(n) ). Si esta condicion es verdadera se evaluara
la condicion ((n%i)==0) que evaluaria ((n modulo 3)==0). Si esta condicion se cumple imprime un "no"y si no se cumple va le va sumando a i (3) 2 numeros hasta que se deje de cumplir la expresion i>=sqrt(n). Si al final se deja de cumplir esta condicion se imprimira un "si".
Ejecucion paso a paso.
Tratare de explicar 2 ejecuciones: evaluando 4 y 17
Evaluando numero 4
InicioSe introduce el numero 4
Se cumple la primera condicion del if,quedaria ((4%2)==0)
Entra por la parte verdadera
Se evalua ùn if con la siguiente condicion (4==2)
Como el 4 no es igual a 2 el resultado es Falso
Entra por la parte falsa
Imprime un "no"Fin
Evaluando el numero 17
Inicio
Se introduce el numero 17
No se cumple la primer if con la condicion ((17%2)==0)
Entra por la parte falsaSe añade el valor "i" que es igual a 3
Se evalua un while con la condicion 3<=raiz(17), la afirmacion es verdadera ya que raiz(17)=4.1 y 3 es menor Entra por la parte verdadera Evalua un if con la siguiente condicion ((17%3)==0), esta afirmacion es falsa Se suma 3+2=5 Se evalua la condicion 5<=raiz(17), la afirmacion es falsa ya que 5 es mayor a 4.1 Sale del while Imrpime si Fin tambien aqui dejo un video del diagrama de flujo en raptor, donde se evaluan tres numero que son el 3, 4 y 17. Si quieren descargar el programa click aqui
________________________________________________________
Problema No. 3
Ejecuta paso por paso la máquina Turing definida por la siguiente función de
transición, con la entrada siendo la representación binaria del número decimal 43

43/2= 26 residuo 1
26/2= 13 residuo 0
13/2= 6 residuo 1
6/2= 3 residuo 0
3/2=1 residuo 1
1/2= 0 residuo 1
y quedaria el numero binario 101011

iniciamos s, inicio
s, inicio - nos movemos hacia la derecha
leemos s,1 - imprimimos 1 y avanzamos hacia la derecha (no hay modificaciones)
leemos s,0 - imprimimos 0 y avanzamos hacia la derecha (no hay modificaciones)
leemos s,1 - imprimimos 1 y avanzamos hacia la derecha (no hay modificaciones)
leemos s,0 - imprimimos 0 y avanzamos hacia la derecha (no hay modificaciones)
leemos s,1 - imprimimos 1 y avanzamos hacia la derecha (no hay modificaciones)
leemos s,1 - imprimimos 1 y avanzamos hacia la derecha (no hay modificaciones)
leemos s, espacio - cambiamos estado "s" a "t", imprimimos 1 y avanzamos hacia la izquierda (si hay modificaciones)
leemos t,1 - imprimimos 1 y avanzamos hacia la izquierda (no hay modificaciones)
leemos t,1 - imprimimos 1 y avanzamos hacia la izquierda (no hay modificaciones)
leemos t,1 - imprimimos 1 y avanzamos hacia la izquierda (no hay modificaciones)
leemos t,0 - imprimimos si y hacemos alto.
el numero de salida seria 1011111 que seria igual a 95
Lo que hace la maquina es multiplicarse por 2 a agrega un 1 de suma y un 1 en el lugar del 8 (se suma 8, dando (43x2)+8+1=95 )
La complejidad asintotica es lineal O(n).
________________________________________________________
1 comentarios:
hola creo que tu programa falla con el numero 9, el 9 no es primo y en tu prograa imprime que es primo..
Publicar un comentario