How can I remove this for-loop in this competitive FizzBuzz code?
The title of your post puts a lot of stress on removing the for loop. Can it be removed?

No, it cannot. You need at least one loop to solve the fizz-buzz...

Additionally, the 'print' statements are by far the largest bulk of your performance problem.

I don't really believe that this code suffers from a problematic performance issue, but, if you want it to go faster, your best bet would be to accumulate all your String values and only print the line once:

NSMutableString* result;
....

for (...) {
    .....
        [result appendString:@"FB "];
    .....
        [result appendFormat:@"%d ", i];

}
printf(result);
printf("\n");


This saves a fair number of unnecessary print statements, and your performance will improve as a result.