Pagini recente » Cod sursa (job #2744760) | Cod sursa (job #1735639) | Cod sursa (job #1765925) | Cod sursa (job #879461) | Cod sursa (job #2354238)
#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 number;
for(int i=0;i<number_of_numbers;i++)
{
fscanf(read,"%d\n",&number);
int number_of_divisors=2;
int copy=number;
int sum=number+1;
int j=0;
int check=1;
while(primes[j]<=(int)sqrt(number))
{
for(int k=primes[j];k<=number/2;k+=primes[j])
{
if(number%k==0 && (check%k!=0 || k==primes[j]))
{
check=check*k;
number_of_divisors++;
sum+=k;
}
}
j++;
}
fprintf(write,"%d %d\n",number_of_divisors,sum);
}
fclose(read);
fclose(write);
return 0;
}