Programa Lex para verificar si un número es primo o no

Problema: escriba un programa Lex para verificar si un número es primo o no.

Explicación:
Lex es un programa de computadora que genera analizadores léxicos y fue escrito por Mike Lesk y Eric Schmidt. Lex lee un flujo de entrada que especifica el analizador léxico y genera el código fuente que implementa el lexer en el lenguaje de programación C.

Definición: Un número primo es un número entero mayor que 1 cuyos únicos factores son 1 y él mismo. Un factor es un número entero que se puede dividir uniformemente en otro número. Los primeros números primos son: 2, 3, 5, 7, 11, 13, 17, 19, 23 y 29.

Ejemplos:

Input: 2 
Output: Prime number

Input: 6
Output: Not a Prime number 

Implementación:

/* Lex Program to check whether a number is Prime or Not */
  
%{
   /* Definition section */
   #include<stdio.h>
   #include<stdlib.h>
   int flag,c,j;
%}
  
/* Rule Section */
%%
[0-9]+ {c=atoi(yytext);
         if(c==2)
         {
           printf("\n Prime number");
         }
         else if(c==0 || c==1)
         {
           printf("\n Not a Prime number");
         }
         else
         {
           for(j=2;j<c;j++)
         {  
         if(c%j==0)
           flag=1;
         }
         if(flag==1)
           printf("\n Not a prime number");
         else if(flag==0)
           printf("\n Prime number");
         }
       }
%%
  
// driver code
int main()
 {
  yylex();
  return 0;
 }

Producción:

Publicación traducida automáticamente

Artículo escrito por thakur_aman y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *