Pagini recente » Cod sursa (job #3252052) | Cod sursa (job #1724475) | Cod sursa (job #1068439) | Cod sursa (job #3120954) | Cod sursa (job #2354247)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int list[1000001];
int 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;
}
int x;
int sum;
int number_of_divisors;
for(int i=0;i<number_of_numbers;i++)
{
fscanf(read,"%d",&x);
sum=1+x;
number_of_divisors=2;
int square=(int)sqrt(x);
int j=0;
while(primes[j]<=square)
{
int copy=x;
int times=1;
if(copy%primes[j]==0)
{
number_of_divisors+=2;
sum+=primes[j]+copy/primes[j];
}
j++;
}
fprintf(write,"%d %d\n",number_of_divisors,sum);
}
fclose(read);
fclose(write);
return 0;
}