aboutsummaryrefslogtreecommitdiff
path: root/googletest/samples/prime_tables.h
diff options
context:
space:
mode:
Diffstat (limited to 'googletest/samples/prime_tables.h')
-rw-r--r--googletest/samples/prime_tables.h15
1 files changed, 7 insertions, 8 deletions
diff --git a/googletest/samples/prime_tables.h b/googletest/samples/prime_tables.h
index 3a10352b..14c016ad 100644
--- a/googletest/samples/prime_tables.h
+++ b/googletest/samples/prime_tables.h
@@ -27,8 +27,6 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
// This provides interface PrimeTable that determines whether a number is a
// prime and determines a next prime number. This interface is used
// in Google Test samples demonstrating use of parameterized tests.
@@ -41,7 +39,7 @@
// The prime table interface.
class PrimeTable {
public:
- virtual ~PrimeTable() {}
+ virtual ~PrimeTable() = default;
// Returns true if and only if n is a prime number.
virtual bool IsPrime(int n) const = 0;
@@ -57,7 +55,7 @@ class OnTheFlyPrimeTable : public PrimeTable {
bool IsPrime(int n) const override {
if (n <= 1) return false;
- for (int i = 2; i*i <= n; i++) {
+ for (int i = 2; i * i <= n; i++) {
// n is divisible by an integer other than 1 and itself.
if ((n % i) == 0) return false;
}
@@ -80,8 +78,9 @@ class PreCalculatedPrimeTable : public PrimeTable {
public:
// 'max' specifies the maximum number the prime table holds.
explicit PreCalculatedPrimeTable(int max)
- : is_prime_size_(max + 1), is_prime_(new bool[max + 1]) {
- CalculatePrimesUpTo(max);
+ : is_prime_size_(std::max(1, max + 1)),
+ is_prime_(new bool[static_cast<size_t>(is_prime_size_)]) {
+ CalculatePrimesUpTo(is_prime_size_ - 1);
}
~PreCalculatedPrimeTable() override { delete[] is_prime_; }
@@ -104,13 +103,13 @@ class PreCalculatedPrimeTable : public PrimeTable {
// Checks every candidate for prime number (we know that 2 is the only even
// prime).
- for (int i = 2; i*i <= max; i += i%2+1) {
+ for (int i = 2; i * i <= max; i += i % 2 + 1) {
if (!is_prime_[i]) continue;
// Marks all multiples of i (except i itself) as non-prime.
// We are starting here from i-th multiplier, because all smaller
// complex numbers were already marked.
- for (int j = i*i; j <= max; j += i) {
+ for (int j = i * i; j <= max; j += i) {
is_prime_[j] = false;
}
}