Pagini recente » Cod sursa (job #2235387) | Cod sursa (job #1733783) | Cod sursa (job #2613491) | Cod sursa (job #2721763) | Cod sursa (job #2354294)
#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)
{
unsigned long long copy=x;
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;
}