iniciar-programa
Define-nueva-instruccion Divide(n) como inicio
  Si no(si-es-cero(n)) y junto-a-zumbador entonces inicio
      coge-zumbador;
      Divide(precede(n));
    fin
  sino
    inicio
         Si no(si-es-cero(n)) y no-junto-a-zumbador entonces
            Mientras no-orientado-al-sur hacer gira-izquierda;
         Si si-es-cero(n) y no-junto-a-zumbador entonces
            Mientras no-orientado-al-este hacer gira-izquierda;
    fin;
fin;
Define-nueva-instruccion  Verifica(n) como
 inicio
   Si junto-a-zumbador  y no(si-es-cero(n)) entonces
     inicio
          coge-zumbador;
          Verifica(precede(n));
          deja-zumbador;
     fin
    sino
      inicio
          Si si-es-cero(n) y no-junto-a-zumbador entonces
            Mientras no-orientado-al-norte hacer Gira-izquierda
          sino
            Mientras no-orientado-al-sur hacer gira-izquierda;
      fin;
 fin;
Define-nueva-instruccion  Vnum(n) como inicio
 si no-orientado-al-este entonces inicio
       Verifica(n);
        Si  no-orientado-al-este  y no-orientado-al-norte  entonces
          Mientras orientado-al-sur y junto-a-zumbador hacer  Divide(n);
    fin;
 fin;
 Define-nueva-instruccion Regresa como inicio
     Repetir 2 veces gira-izquierda;
     avanza;
     Repetir 2 veces gira-izquierda;
fin;

Define-nueva-instruccion Recoge(n) como inicio
   Si junto-a-zumbador entonces inicio
       coge-zumbador;
       Recoge(sucede(n));
   fin
   sino
     inicio
        Mientras no-orientado-al-sur hacer gira-izquierda;
        Si no-junto-a-zumbador entonces  Repetir n veces deja-zumbador;
        Vnum(2);
         Si no-junto-a-zumbador entonces  Repetir n veces deja-zumbador;
        Vnum(3);
         Si no-junto-a-zumbador entonces  Repetir n veces deja-zumbador;
        Vnum(5);
         Si no-junto-a-zumbador entonces  Repetir n veces deja-zumbador;
        Vnum(7);
        si no-orientado-al-este entonces
        Repetir n veces deja-zumbador
    fin;
fin;

Define-nueva-instruccion BuscaSiguiente como inicio
   Mientras no-orientado-al-norte hacer gira-izquierda;
   Si frente-libre  y orientado-al-norte entonces inicio
       avanza;
       Si junto-a-zumbador entonces inicio
           coge-zumbador;
             Si junto-a-zumbador entonces inicio
                 deja-zumbador;
                   Recoge(0);
                   Si orientado-al-este entonces     (* No es primo *)
                     inicio
                         Gira-izquierda; Regresa;  gira-izquierda;
                     fin;
             fin
             sino
             inicio
                  deja-zumbador;
                    Regresa;   gira-izquierda;
             fin;
       fin
       sino
        inicio
            Regresa;
            gira-izquierda;
        fin;
   fin;
   Mientras no-orientado-al-oeste hacer gira-izquierda;
  Si orientado-al-oeste y frente-libre y  no-junto-a-zumbador entonces inicio
        avanza;
        Si junto-a-zumbador entonces inicio
              coge-zumbador;
               si junto-a-zumbador entonces inicio
                    deja-zumbador;
                    Recoge(0);
                    Si orientado-al-este entonces inicio
                        Repetir 2 veces gira-izquierda; Regresa; gira-izquierda;
                    fin;
               fin
               sino
                inicio
                 deja-zumbador;
                    Regresa; gira-izquierda;
                fin;
        fin
        sino
          inicio
            Regresa;
            gira-izquierda;
          fin;
  fin;
     Mientras no-orientado-al-sur hacer gira-izquierda;
 Si orientado-al-sur y frente-libre y no-junto-a-zumbador entonces inicio
      avanza;
      Si junto-a-zumbador entonces inicio
         coge-zumbador;
         Si junto-a-zumbador entonces inicio
              deja-zumbador;
               Recoge(0);
              Si orientado-al-este entonces inicio
                  Repetir 3 veces gira-izquierda;   regresa;  gira-izquierda;
              fin;
         fin
         sino
          inicio
           deja-zumbador;
             Regresa; gira-izquierda;
          fin;
      fin
      sino
       inicio
          Regresa;
          gira-izquierda;
       fin;
 fin;
    Mientras no-orientado-al-este hacer gira-izquierda;
 Si  frente-libre y orientado-al-este y no-junto-a-zumbador entonces inicio
        avanza;
        Si junto-a-zumbador entonces inicio
            coge-zumbador;
            Si junto-a-zumbador entonces inicio
                deja-zumbador;
                Recoge(0);
                Si orientado-al-este entonces inicio
                     Regresa;
                fin;
            fin
            sino
             inicio
               deja-zumbador;
                Regresa; gira-izquierda;
             fin;
        fin
        sino
         inicio
            Regresa; gira-izquierda;
         fin;
 fin;
fin;

 Define-nueva-instruccion BuscaPrimos como
  inicio
    Si junto-a-zumbador entonces inicio
         Mientras junto-a-zumbador hacer coge-zumbador;
         BuscaPrimos;
    fin
    sino
      inicio
         Mientras no-orientado-al-norte hacer gira-izquierda;
         BuscaSiguiente;
         si no-junto-a-zumbador entonces
          apagate
         sino
            inicio
              mientras no-orientado-al-norte hacer gira-izquierda;
              BuscaPrimos;
            fin;
      fin;
  fin;
    inicia-ejecucion
        BuscaPrimos;
        apagate;
    termina-ejecucion
finalizar-programa
