10892 - LCM Cardinality

#include<stdio.h>
#include<vector>
#include<math.h>
using namespace std;
vector<long long int>divisor;
long long int G(long long int a,long long int b)
{
    long long int temp,gcd,m,n,lcm;
    m=a;
    n=b;
    while(b!=0)
    {
        temp=b;
        b=a%b;
        a=temp;
    }
    gcd=a;
    lcm=(m*n)/gcd;
    return lcm;
}
int main()
{
    long long int a,b,c,N,i,j,counter,LCM;
    while(scanf("%lld",&N)==1)
    {
        if(N==0)
        {
            break;
        }
        a=sqrt(N);
        for(i=1; i<=a; i++)
        {
            if(N%i==0)
            {
                b=N/i;
                if(i==b)
                {
                    divisor.push_back(i);
                }
                else
                {
                    divisor.push_back(i);
                    divisor.push_back(b);
                }
            }
        }
        c=divisor.size();
        counter=0;
        for(i=0;i<=c;i++)
        {
            for(j=i;j<c;j++)
            {
                LCM=G(divisor[i],divisor[j]);
                if(LCM==N)
                {
                    counter++;
                }
            }
        }
        printf("%lld %lld\n",N,counter);
        divisor.clear();
    }
    return 0;
}

0 comments: (+add yours?)