The next code works as is but ...

```
import std.stdio;
import std.traits;

bool isPrime(T)(T n) if (isIntegral!T) {
    if (n <= T(3)) return n > T(1);

    if (n % T(2) == T(0) || n % T(3) == T(0)) return false;

for (T candidate = T(5); candidate * candidate <= n; candidate += T(6)) { if (n % candidate == T(0) || n % (candidate + T(2)) == T(0)) {
            return false;
        }
    }

    return true;
}

T nextPrime(T)(T n) if (isIntegral!T) {
    if (n < T(2))
        return T(2);

T candidate = (n % T(2) == T(0)) ? n + T(1) : n + T(2); // Start from next Odd

    for (;; candidate += T(2)) { // Skip even
        if (isPrime(candidate)) {
            return candidate;
        }
    }
}

void main() {
    int num = 10; // Example starting number
    writeln("\nNext prime after ", num, " is ", nextPrime(num));
}
```

... it doesn't at all once I change `int num = 10;` to `const int num = 10;`. I'm confused

How to fix it?

Reply via email to