Cod sursa(job #417700)

Utilizator miculprogramatorA Cosmina - vechi miculprogramator Data 14 martie 2010 18:43:27
Problema Suma si numarul divizorilor Scor 10
Compilator c Status done
Runda Arhiva educationala Marime 0.74 kb
#include <stdio.h>
#include <math.h>

#define MAX 1000000

int ciur[MAX];
long long n, sum, div, put;
int t, i, j, k;

int main()
{
	FILE *f = fopen ("ssnd.in","r");
	FILE *g = fopen ("ssnd.out","w");
	fscanf (f,"%d", &t);
	
	for (i=1; i<=MAX; ++i)
		ciur[i] = 1;
	for (i=2; i*i < MAX; ++i)
		if (ciur[i])
			for (j=2; j*i < MAX; ++j)
				ciur[i*j] = 0;
	
	for (i=1; i<=t; ++i)
	{
		fscanf (f,"%lld", &n);
		div = sum = 1;
		j = 2;
		while (n > 1)
		{
			while (!ciur[j])
				j ++;
			put = 0;
			while (n % j == 0)
			{
				put ++;
				n /= j;
			}
			div *= (put+1);
			sum *= ( (pow(j,put+1) - 1) / (j-1) );
			j ++;
		}
		fprintf (g,"%lld %lld\n", div, sum);
	}
	
	
	fclose(g);
	fclose(f);
	return 0;
}