Pagini recente » Cod sursa (job #830677) | Cod sursa (job #1127521) | Cod sursa (job #1940999) | Cod sursa (job #2419402) | Cod sursa (job #2354275)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
unsigned long long list[100000000];
unsigned long long primes[100000000];
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<=99999999;i++)
if(list[i]==0)
{
number_of_primes++;
primes[number_of_primes-1]=i;
for(int j=i+i;j<=99999999;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)
{
unsigned long long copy=x;
int times=1;
if(copy%primes[j]==0)
{
number_of_divisors+=2;
if( copy/primes[j]!=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%9973);
}
fclose(read);
fclose(write);
return 0;
}