I actually paid my subscription just to answer this 
Anyway, I rewrote your algorithm to VisualBasic.NET. I’m not sure how compatible our algorithsm are, but both are “interpreted” (In a manner of speaking, I mean, .NET’s CLR environment is interpreted in a sense) so I think there’s a good correlation between the two.
I imagine if I rewrote it in a true C++ console application, that the speed would be much greater.
anyway, here’s my .Net algorithm (Note, I know it’s not great code…but I wrote it by looking at the OP’s code (heh, as opposed to OP codes) and it gets the job done. (I’m always very self concious of others looking at my code anyway.)
so here’s what I ran:
Private Sub btnPrimeNums_Click() Handles btnPrimeNums.Click
Dim dtStart As DateTime = Now
Dim tsSpan As TimeSpan
Dim x, y, z As Integer
Dim blnFoundNonPrime As Boolean
Dim col As New Collection
For x = 1000000 To 3 Step -1
blnFoundNonPrime = False
For y = 2 To (x / 2) Step 1
If (x Mod y) = 0 Then
'we found a "non prime" number, so exit
blnFoundNonPrime = True
Exit For
End If
Next
If Not blnFoundNonPrime Then
col.Add(x)
End If
Next
tsSpan = Now.Subtract(dtStart)
MsgBox(tsSpan)
Dim strResults As String
Dim n As Integer
For Each n In col
strResults += CStr(n) + vbCrLf
Next
txtResults.Text = strResults
End Sub
Note that there are some major differences. For exmaple, in your code, when you found a number, you just printed it to the screen. Highly efficent and quick. When I found one, I added it to VB.Net’s Collection class, which is a bit more expensive.
At the end I pop up a MsgBox telling me how much time had passed. Then I dumped the collection to a string, and displayed that string in a TextBox.
This is, of course going on on an Intel (CISC opposed to your mac’s RISC) machine, and not a particularly powerful one, running the .Net framework on top of windows.
I realize this is comparing Apples(heh) and Oranges in a manner of speaking, but it will show a difference in performance between older technology and newer technology.
Mine has finished in the time it took to write this post, wheras after several hours, yours hadn’t hit one prime number (FTR, the first prime number it would hit would be 999,983…so it hadn’t even iterated 17 numbers in the outer loop)
I ran this code on a WinXP Pro machine with a 2.0 Ghz Pentium 4-Mobile and 512k of ram. Note that since this is a multi-tasking OS, my computer was doing other things while the process was going on, whereas your computer was dedicated completely to finding the prime numbers.
Results:
Number of Prime Numbers found: 78,497
Time Span: 10 Minutes, 6 seconds
What this tells us, I haven’t a clue. But stuff’s faster today than it was then, that’s for sure 
Steve