trailing zeroes program, wrong answer?
    
    include<stdio.h>
    int main()
    {
    long i,j[100000],k,l,T,a,n[100000],c,sum=0,m;
    scanf("%ld", &T);
    for(c=1; c<=T; c++)
    {
    n[c] = 0;
    }
    for(i=1; i<=T; i++)
    {
    scanf("%ld", &j[i]);
    printf(" \n");
    }
    for(k=1; k<=T ; k++)
    {
       for(l=1; j[k]>5^l; l=l+15);
        
          a=l++;
          n[k] = j[k];
          while(a>0)
          { 
           n[k] = n[k]/5^(--a);
           sum = sum + n[k];
          }
         n[k] = sum;
       
    }
    for(m=1; m<=T; m++)
    {
     printf("%ld \n", &n[m]);
     }
     return 0;      
     }

If the input is
3
12
51
123
Then
Output
no of zeroes at the end of 12!
no of zeroes at the end of 51!
no of zeroes at the end of 123!
Thhe output is coming wrong, Please help?
Point the error at least....
trailing zeroes program, wrong answer?
===

    
    include<stdio.h>
    int main()
    {
    long i,j[100000],k,l,T,a,n[100000],c,sum=0,m;
    scanf("%ld", &T);
    for(c=1; c<=T; c++)
    {
    n[c] = 0;
    }
    for(i=1; i<=T; i++)
    {
    scanf("%ld", &j[i]);
    printf(" \n");
    }
    for(k=1; k<=T ; k++)
    {
       for(l=1; j[k]>5^l; l=l+15);
        
          a=l++;
          n[k] = j[k];
          while(a>0)
          { 
           n[k] = n[k]/5^(--a);
           sum = sum + n[k];
          }
         n[k] = sum;
       
    }
    for(m=1; m<=T; m++)
    {
     printf("%ld \n", &n[m]);
     }
     return 0;      
     }

If the input is
3
12
51
123
Then
Output
no of zeroes at the end of 12!
no of zeroes at the end of 51!
no of zeroes at the end of 123!
Thhe output is coming wrong, Please help?
Point the error at least....