Pagini recente » Cod sursa (job #3000834) | Cod sursa (job #277030) | Cod sursa (job #3226843) | Cod sursa (job #1573123) | Cod sursa (job #627964)
Cod sursa(job #627964)
#include <iostream>
#include <fstream>
using namespace std;
int i = 1 , divizori[10001];
long long int ciur[110000] , suma;
void init(int n , int m)
{
int j ;
for(j = 0 ; j < n ; j++)
divizori[j]=-1;
for(j = 1 ; j <= m ; j++)
ciur[j] = j;
}
void desc (int n)
{
int d , clona;
i = 1;
clona = n;
for( d = 2 ; d <= n ; d++ )
if( clona % d == 0 )
{
while( clona % d == 0 )
clona /= d;
divizori[i] = d;
i++;
}
}
int main ()
{
long int n , x , aux , k , poc , h , limita;
long long int s;
int p , j;
fstream f("sum.in",ios::in);
fstream g("sum.out",ios::out);
f>>n;
for( p = 1 ; p < n+1 ; p++ )
{
f>>x;
s = suma = 0;
aux = 2*x ;
init( 100 , 2*x );
desc(x);
for( i = 1 ; divizori[i] != -1 ; i++);
limita = i - 1 ;
for( i = 1 ; i < limita + 1 ; i++ )
for( j = 1 ; j <= (2*x)/divizori[i] ;j++)
suma += j*divizori[i];
s =(aux * (aux+1))/2;
k = i ;
for( i = 1 ; i < k ; i++ )
for( j = i + 1 ; j <= k ; j++ )
{
poc = divizori[i] * divizori[j];
for( h = 1 ; h <= (2 * x)/ poc ; h++ )
suma -= h * poc;
}
s -= suma;
g<<s<<'\n';
}
return 0;
}