I don't think that's quite it, but it's close. I don't think this is a case where we can use 30 as the ratio between each chain length; empirically it seems to be off, at the very least--I've estimated it as closer to 12 by looking at the gap between 1- and 5-chains.

Also, that would not be the blocks per hour; it would be the number of 8-chains per hour. Primecoin has a fractional difficulty that is roughly linear, so if the difficulty is 8.5 then about half of all 8-chains are not valid work shares. If the difficulty is 8.99 then only 1 in 100 8-chains are valid. You need to account for that before you arrive at blocks per hour. Generally it is blocks per hour = 8-chains/h * (1+difficulty-floor(difficulty)), but when you get close to the next integer difficulty things get weird since 9-chains work for difficulty 8.XX and 9-chains are more common than 8.995 chains.

Aha, so while the integer part is logarithmic, the fractional part is linear? I thought the fractional part was represented in a way that makes the entire number smoothly logarithmic (if you have something linear, just take the log, then the addition of these parts corresponds to multiplication in the "original" difficulty space).

Of course, if there are these complications close to the next integer, it won't work exactly, but it might be a useful estimate for long-term block rewards anyway. It's not like mining calculators can guarantee when you find the next block

In fact, whether the fractional part is logarithmic or linear won't make such a huge difference, because a huge majority of the difficulty is in the integer part. (Putting my physicist hat on - we're interpolating between two points we know to be correct, so it's hard to make any huge deviations, especially when you are close to either point.)

I admit the base must be much more like 12 than 30, when looking at past block rates. I wonder where the 30 came from, though, I recall seeing it in a number of posts...