Even today, it takes quite some schooling to come to terms with some of the _easy_ examples.
For example, I expect that easily over 95% of university graduates disagree with the statement "There are as many rational numbers as there are prime numbers.".
I even fear that is true for the easier to believe "0.9999999... = 1"
For example, most mathematicians would agree that there are as many reals in [0, 1] as there are in the real line. But according to a different definition of size, namely the most famous measure from measure theory, the Lebesgue measure --- the length of [0, 1] is 1 while the real line is undefined (I think). The person on the street would probably prefer the Lebesgue measure as more intuitive.
I guess my ultimate point is that imprecise statements are harder to prove wrong. There's a quote, I don't remember who said it, that you should mistrust precise statements rather than imprecise ones, because it's precisely precise statements that can be proven wrong.
edit: found the quote: http://www.brainyquote.com/quotes/quotes/r/raymondsmu190329....
You could call Z[n] ?for any composite n? that (in Z[4], the multiplication table only contains 0, 1, and 2, so 3 is prime there; Z[p] for prime p gives you p different numbers and zero primes) but I think those are the only ones. If you accept that infinity exists you get Hilbert's hotel, which gets you all those paradoxes, which after lots of sleepless nights leads to the only logical conclusion that giving up intuition about infinities is the best way out.
If you don't accept that infinities exist, there must be a largest integer M, and you get to decide what M+1 or 2M are. That leads either to Z[n], to K&R's undefined behavior, which is so ugly no mathematician would dare publish it :-), or to some formalized variant of it that isn't Z[n].
I'm not sure I would call the values of Z[n] natural numbers, though, as that feels like it requires having negative numbers, too. Hm, maybe a shifted Z[n] would work. If you replace {0,1,2,3} by {0,1,2,-2,-1} in Z[5], you have two negative and three natural numbers in your universe, none of which is prime.
I doubt that any of this kind of mathematical hair-splitting would bring aboard those who have trouble with grasping 0.999999... = 1, though :-)
I dont know that it would be exactly analogous to normal Z[M+1], and might have useful properties for some kind of geometric or combinatorical modeling. (My hunch is any time you want to be capable of carrying a "crossed threshold" flag as well as a value, and have that cascade through calculation.)
It would also model systems where you can get to infinity in finite steps, but can't traverse back. Not sure if those are useful in the abstract, though.
That's pragmatic, highly useful, but a nightmare for mathematicians. You lose invariants such as x+y-y=x (associativity and communicativity, in general), so you're no longer talking of a group (I don't know of research on 'almost groups')
Compiler writers may happily make matters worse by assuming those laws still hold, with the effect that the same computation may overflow or not on different CPUs, under different compilers, compiler settings, or even the same compiler in the same compilation run.
Well, you actually just lose general inverses, so there's no sensible '-' operation that can just be turned in to '+ (-x)', where -x is the inverse of x under +. It's similar to the case where you have x * y / y = x except in the case where y = 0 (because there's no 0^-1). (As someone else pointed out, this puts you in to a semi-ring rather than a ring, which is what the general tropical semi-ring is. [1])
You can still have elements for which x + y - y = x is true, and usually that's a well-defined sub-space of x,y combinations. Proofs then usually use a case analysis: either we're in the subspace where x + y - y = x holds, or else we can use a property of not being in that space to derive a different but still useful conclusion.
In some senses, it acts as a Maybe type, and can perform arithmetic without having to unpack that Maybe-ness.