Cod sursa(job #517632)

Utilizator ms-ninjacristescu liviu ms-ninja Data 29 decembrie 2010 13:26:28
Problema Sum Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#include <bitset>
using namespace std;
#define dim 100001
bitset <dim> v;
int q[10000];

int main()
{
	ifstream fin("sum.in");
	ofstream fout("sum.out");
	int n, nr, i, j,f;
	fin>>n;
	
	f=1;
	q[0]=2;
	
	for(i=4;i<=dim;i+=2)
		v[i]=1;
	
	for(i=3;i<dim;i+=2)
	{
		if(v[i]==0)
		{
			q[f]=i;
			++f;
			for(j=i+i+i;j<dim;j+=2*i)
				v[j]=1;
				
		}
	}
	
	
	for(i=1;i<=n;++i)
	{
		fin>>nr;
		long long unsigned aux=nr*2;
		long long unsigned s=aux*(aux+1)/2;
		
		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;
}