Cod sursa(job #626553)

Utilizator luckyme91wiz kid luckyme91 Data 27 octombrie 2011 16:06:50
Problema Suma si numarul divizorilor Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.7 kb
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main () {

int n, i, s, nr, div = 2;
int *divs = calloc (1000001, sizeof(int));
int temp;
freopen ("ssnd.in", "r", stdin);
freopen ("ssnd.out", "w", stdout);
while (div < 1000001)
{
	if (divs[div] == 0)
	{
		divs[div] = 1;
		temp = div * div;
		while (temp > 0 && temp < 1000001 && divs[temp] == 0)
		{
			divs[temp] = 2;
			temp += div;
		}
	}
	if (div == 2)
		div ++;
	else
		div += 2;
}

scanf ("%d", &n);

long int tmp;
while (n--)
{
	scanf ("%ld", &tmp);
	nr = 2;s = 1 + tmp;
	for (i = 2; i < sqrt (tmp); i++)
		if (divs[i] == 1 && tmp % i == 0)
		{
			s += i + tmp / i;
			nr += 2;
		}
	printf ("%d %d\n", nr, s);
}
free (divs);
return 0;
}