Pagini recente » Cod sursa (job #3230327) | Profil apostolandrei | Cod sursa (job #4809) | Cod sursa (job #2130738) | Cod sursa (job #2354255)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
unsigned long long list[1000001];
unsigned long long primes[1000001];
int main()
{
FILE *read=fopen("ssnd.in","r");
FILE *write=fopen("ssnd.out","w");
int number_of_numbers;
int number_of_primes=0;
fscanf(read,"%d",&number_of_numbers);
for(int i=2;i<=1000000;i++)
if(list[i]==0)
{
number_of_primes++;
primes[number_of_primes-1]=i;
for(int j=i+i;j<=1000000;j+=i)
list[i]=1;
}
unsigned long long x;
unsigned long long sum;
int number_of_divisors;
for(int i=0;i<number_of_numbers;i++)
{
fscanf(read,"%llu",&x);
sum=1+x;
number_of_divisors=2;
long square=(long)sqrt(x);
int j=0;
while(primes[j]<=square)
{
int copy=x;
int times=1;
if(copy%primes[j]==0)
{
number_of_divisors+=2;
if(primes[j]!=copy/primes[j])
sum+=primes[j]+copy/primes[j];
else
{
sum+=primes[j];
number_of_divisors--;
}
}
j++;
}
fprintf(write,"%d %llu\n",number_of_divisors,sum);
}
fclose(read);
fclose(write);
return 0;
}