Cod sursa(job #488880)

Utilizator tudgal1001Profir Tudor tudgal1001 Data 30 septembrie 2010 13:59:14
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<cstdio>
#include<math.h>
#include<vector>
using namespace std;

int er[100];

int main ()
{
	int ka,i,z,max,lim,j,fact[100],v[100];
	freopen("ssnd.in","r",stdin);
	freopen("ssnd.out","w",stdout);
	scanf("%d",&z);
	max=0;
	for (i=1; i<=z; i++)
	{
		scanf("%d",&v[i]);
		if (v[i]>max) max=v[i];
	}
	lim=sqrt(max);
	ka=0;
	for (i=2; i<=lim; i++)
		if (er[i]==0) 
		{
			fact[++ka]=i;
			for (j=i+i; j<=lim; j+=i)
				er[j]=1;
		}
	for (i=1; i<=ka; i++)
		printf("%d ",fact[i]);
	for (i=1; i<=z; i++)
	{
		nr=1; sum=1; 
		if (a[i]==1) ok=0; else ok=1;
		for (j=1; j<=ka; j++)
		{
			if (fact[j]>a[i]) break;
			if (a[i]==1) break;
			exp=0;
			while (a[i]%fact[j]==0)
			{
				exp++;
				a[i]/=fact[j];
			}
			nr*=(exp+1);
			//de facut si suma divizorilor (memorarea nr inainte de impartire)