The following code is used to convert a base-10 number to a base-N number, where `N` is a length of a given alphabet that contains characters of which a base-N number can consist. 

The number to convert is always increasing, like from 1 to 45789, not from 536 to 13. The resulting number may not contain zero as first digit, so I need to *carry the one*. 

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>

    typedef unsigned long long ull;

    void conv(ull num, const char *alpha, char *word, int base){
        while (num) {
           *(word++)=alpha[(num-1)%base];
           num=(num-1)/base;
        }
    }

    int main(){
       ull nu;
       const char alpha[]="abcdefghijklmnopqrstuvwxyzOSR34"; 

       /* "OSR43" was added to show that the letters of alpha
          are NOT in alphabetical order */

       char *word=calloc(30,sizeof(char));
       // word always contains null-terminator
       int base=(int)strlen(alpha);
       for (nu=1;nu<=1e8;++nu) {
           conv(nu,alpha,word,base);
           printf("%s\n",word);
       }
       return 0;
    }

This code's working fine but I need to speed it up _as much as possible_. How do I do it?