#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;
}
#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?)
Post a Comment