10699 - Count the factors

#include<stdio.h>
#include<math.h>
#define MAX 1000009
bool arr[MAX];
void sieve()
{
    long long int i,j,k;
    k=sqrt(MAX);
    for(i=3; i<k; i+=2)
    {
        if(arr[i]==0)
        {
            for(j=i*i; j<MAX; j+=i+i)
            {
                arr[j]=1;
            }
        }
    }
    arr[1]=1;
    for(i=4; i<MAX; i=i+2)
    {
        arr[i]=1;
    }
}
int main()
{
    long long int N,c,d,counter,j;
    sieve();
    while(scanf("%lld",&N)==1)
    {
        if(N==0)
        {
            break;
        }
        if(!arr[N])
        {
            printf("%lld : 1\n",N);
            continue;
        }
        c=sqrt(N);
        counter=0;
        for(j=2; j<=c; j++)
        {
            if(N%j==0)
            {
                d=N/j;
                if(arr[d]==0 && d!=j && arr[j]==0)
                {
                    counter++;
                    counter++;
                }
                else if((arr[d]==0&&arr[j]!=0)||(arr[d]!=0&&arr[j]==0))
                {
                    counter++;
                }
            }
        }
        printf("%lld : %lld\n",N,counter);
    }
    return 0;
}

0 comments: (+add yours?)