Stap 2: priemgetal generator
Een priemgetal is een getal dat alleen kan worden verdeeld door twee getallen, één en zelf. De "twee cijfers" in die definitie is belangrijk, dat het elimineert een. De eerste paar priemgetallen zijn 2, 3, 5, 7, 11 en 13. Hoe groter een getal is de minder kans is prime, maar het aantal priemgetallen is oneindig.
Dit programma zal het genereren van een lijst van priemgetallen met behulp van de seriële monitor, kunt u op een belangrijke, gevolgd door invoeren, als u wilt het programma onderbreken gedurende drie seconden.
Kopieer deze code naar de Arduino IDE, uploaden en de seriële monitor met 9600 baud te starten:
/***************************************************************** * Filename: primes.ino * * Find prime numbers and output them through the serial monitor. * Press any key, then enter, to pause the program for 3 seconds. * ***************************************************************** /********************************************************* * The setup() function, runs at startup. *********************************************************/ void setup() { Serial.begin(9600); //Start the serial monitor. } /********************************************************* * The loop() function, runs continuous when setup finishes. *********************************************************/ void loop() { if(Serial.available()>0) { int x = Serial.read(); delay(3000); } Serial.println("2"); for(long i=3;i<2147483647;i+=2) // Check odd numbers up to 2^31. { if(Serial.available()>0) // Is there a keypress? { int x = Serial.read(); // If so read it, delay(3000); // and wait three seconds. } long flag = 0; int limit = sqrt(i); for(long j=3;j<=limit;j+=2) // Inside for statement. { if((i % j) < 1) // Is i divisable by j? { flag = 1; // If yes then i is not prime, j = limit; // set flag and force exit } // of inside for statement. } if(flag < 1) // If flag is still zero i is prime. { Serial.println(i); // Print the results. if(i < 1000) delay(250); // Just makes the start easier to see. } } }