Cod sursa(job #517621)

Utilizator ms-ninjacristescu liviu ms-ninja Data 29 decembrie 2010 13:05:17
Problema Sum Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>
using namespace std;
#define dim 100001

int v[dim],q[10000];

int main()
{
	ifstream fin("sum.in");
	ofstream fout("sum.out");
	int n, nr, i, j,f;
	fin>>n;
	
	f=0;
	for(i=2;i<=dim;++i)
	{
		if(!v[i])
		{
			q[f]=i;
			++f;
			for(j=i+i;j<dim;j+=i)
				v[j]=1;
				
		}
	}
	
	
	for(i=1;i<=n;++i)
	{
		fin>>nr;
		int aux=nr*2;
		int s=nr*(nr*2+1);
		
		if(v[nr]==0)
			s-=3*nr;
		else
		{
			j=0;
			while(nr>1)
			{
				if(nr%q[j]==0)
				{
					if(q[j]!=2)
					{
					s-=q[j];
					for(int k=q[j]*q[j];k<=aux;k+=2*q[j])
						s-=k;
					}
					else
						for(int k=q[j];k<=aux;k+=2)
							s-=k;
					while(nr%q[j]==0)
						nr/=q[j];
				}
				++j;
			}
		}
		
		
		
			fout<<s<<'\n';
	}
	return 0;
}