Pagini recente » Cod sursa (job #875622) | Cod sursa (job #1814328) | Cod sursa (job #2308643) | Cod sursa (job #2326178) | Cod sursa (job #2439369)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define null NULL
#define in "ssnd.in"
#define out "ssnd.out"
FILE *read,*write;
int number_of_primes = 0;
int primes[1000001];
int visited[1000001];
int N = 0;
int number_of_divisors, sum_of_divisors;
int current_number;
void CiurulLuiEratosthenes()
{
for (int i = 2; i <= 1000000; i++)
{
if(visited[i] == 0)
{
primes[number_of_primes ++] = i;
for (int j = i; j <= 1000000; j = j + i)
visited[j] = 1;
}
}
}
int main(void)
{
read = (FILE *)fopen(in, "r");
write = (FILE *)fopen(out, "w");
fscanf(read, "%d", &N);
CiurulLuiEratosthenes();
for (int i = 0; i < N; i++)
{
fscanf(read, "%d", ¤t_number);
int square_root = sqrt(current_number);
int j = 0;
sum_of_divisors = current_number + 1;
number_of_divisors = 2;
while (primes[j] <= square_root && j < number_of_primes)
{
if (current_number % primes[j] == 0)
{
number_of_divisors ++;
sum_of_divisors += primes[j];
if ((current_number / primes[j]) != primes[j])
{
number_of_divisors ++;
sum_of_divisors += (current_number / primes[j]);
}
}
j++;
}
fprintf(write, "%d %d\n", number_of_divisors, sum_of_divisors % 9973);
}
fclose(read);
fclose(write);
return 0;
}