3 ms·
Is it correct? What is x for n < 19 for example?
by the-dude 10y ago
Is it correct? What is x for n < 19 for example?
- kr7 10y agoIt works for 32-bit unsigned integers and double precision floats. For n < 19, "(double)n * (1.0 / 19.0)" evaluates to a double between 0.0 and 1.0, then it is truncated to 0 when it is implicitly converted to unsigned int. Since there are only 2^32 values for 32-bit integers, it is possible to test all values in under a minute: #include <stdio.h> #include <stdint.h> int main() { uint32_t n = 0; do { uint32_t a = n / 19; uint32_t b = (double)n * (1.0 / 19.0); if (a != b) { printf("Not equal for n = %u\n", n); } ++n; } while (n != 0); }