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