GY-63_MS5611/libraries/timing/examples/seconds/seconds.ino
2021-12-29 11:16:45 +01:00

85 lines
1.2 KiB
C++

//
// FILE: seconds.ino
// AUTHOR: Rob Tillaart
// PURPOSE: demo
// URL: https://github.com/RobTillaart/timing
#include "timing.h"
#if defined(ESP32)
#define MAXPRIMES 800
const uint32_t mx = 1000000;
#else
#define MAXPRIMES 800
const uint32_t mx = 15000;
#endif
uint16_t primes[MAXPRIMES];
uint16_t idx = 0;
uint32_t x = 1;
void setup()
{
Serial.begin(115200);
Serial.println(__FILE__);
Serial.println("UNO (16Mhz) takes ~ 30 seconds...");
Serial.println("ESP32 (240MHz) takes ~ 10 seconds...");
delay(10);
seconds sec; // starts at zero
while (x < mx)
{
nextPrime();
}
Serial.print("Seconds:\t");
Serial.println(sec.now());
delay(10);
x = 1;
sec.set(); // starts at zero
while (x < mx)
{
nextPrime();
}
Serial.print("Seconds:\t");
Serial.println(sec.now());
Serial.println("\nDone...");
}
void loop()
{
}
// sort of sieve.
int nextPrime()
{
bool prime = true;
do
{
prime = true;
x++;
for (uint16_t i = 0; i < idx; i++)
{
if ( (x % primes[i]) == 0)
{
prime = false;
break;
}
}
} while (!prime);
if (idx < MAXPRIMES) primes[idx++] = x;
return x;
}
// -- END OF FILE --