Math

class Solution {
public:
    vector<int> closestPrimes(int left, int right) {
        vector<int> flags(right+1, 1);
        flags[0] = 0;
        flags[1] = 0;

        for (int i = 2; i * i <= right; i++) {
            for (int j = i * i; j <= right; j = j + i) {
                flags[j] = 0;
            }
        }

        vector<int> result = {-1, -1};
        int min = INT_MAX;
        int l = -1;
        int r = -1;
        for (int i = left; i <= right; i++) {
            if (flags[i] == 1) {
                printf("i: %d\n", i);
                if (l == -1 && r == -1) {
                    l = i;
                    r = i;
                } else {
                    l = r;
                    r = i;
                    if (r - l < min) {
                        min = r - l;
                        result[0] = l;
                        result[1] = r;
                    }
                }
            }
        }
        return result;
    }
};

GCD

  1. Brute Force

  2. Euclidean Division

  3. Phase Reduction Technique

  4. Combination of Phase Reduction Technique and Transposition

Last updated

Was this helpful?