Advertisement
KeeganT

Displaying Prime Numbers

Jan 18th, 2019
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //Global Variables
  2. int ledPin[]={9,2,3,4,5,6,7,8};
  3. char finalStr[8];
  4. bool prime;
  5.  
  6. void setup()
  7. {
  8.   Serial.begin(9600);
  9.   for(int c=0;c<8;c++)pinMode(ledPin[c],OUTPUT); //Sets all pins to output
  10. }
  11.  
  12. int primeDisplay(int num)
  13. {
  14.   uint8_t bitsCount=sizeof(num)*8; //Converts integer to binary string
  15.   char str[bitsCount+1];
  16.   uint8_t i=0;
  17.   while(bitsCount--)str[i++]=bitRead(num,bitsCount)+'0';
  18.   str[i]='\0';
  19.   char finalStr[8];
  20.   for(int c=0;c<8;c++)finalStr[c]=str[c+7];
  21.   finalStr[0]=str[8];
  22.   finalStr[1]=str[9];
  23.   finalStr[2]=str[10];
  24.   finalStr[3]=str[11];
  25.   finalStr[4]=str[12];
  26.   finalStr[5]=str[13];
  27.   finalStr[6]=str[14];
  28.   finalStr[7]=str[15];
  29.   for(int c=0;c<8;c++)digitalWrite(ledPin[c],LOW); //Resets pins
  30.   for(int c=0;c<8;c++)if(finalStr[c]=='1')digitalWrite(ledPin[c],HIGH); //Lights up appropriate pins
  31. }
  32.  
  33. void loop()
  34. {
  35.   for(int c=2;c<255;c++) //Determines prime numbers
  36.   {
  37.     prime=true;
  38.     for(int x=2;x*x<=c;x++)
  39.     {
  40.       if (c%x==0)
  41.       {
  42.         prime=false;
  43.         break;
  44.       }
  45.     }
  46.     if(prime==true)
  47.     {
  48.       Serial.println(c); //Shows prime number as an int to the serial monitor
  49.       primeDisplay(c); //Displays prime number in binary with LEDs
  50.       delay(1000);
  51.     }
  52.   }
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement