On Saturday, 23 March 2024 at 19:30:29 UTC, Menjanahary R. R. wrote:
for (T candidate = T(5); candidate * candidate <= n; candidate += T(6)) {

When T is `const int`, the above code declares and initializes a constant variable:
```d
const int candidate = const int(5);
```

Then, at the end of each loop iteration, it does:
```d
candidate += const int(6);
```

So you are trying to modify a constant. Constants can only be initialized, never assigned.

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

    for (;; candidate += T(2)) { // Skip even

Same here, you declare a constant then try to assign to it at the end of each loop iteration.

Reply via email to