Pagini recente » Cod sursa (job #3122263) | Cod sursa (job #180610) | Cod sursa (job #2867433) | Cod sursa (job #1163146) | Cod sursa (job #615426)
Cod sursa(job #615426)
#include <iostream>
#include <fstream>
using namespace std;
int i = 1 , divizori[10000];
long long int ciur[100100];
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 ;
i = 1;
for( d = 2 ; d <= n/2 ; d++ )
if( n % d == 0 && divizori[i - 1] != d )
{
divizori[i] = d;
i++;
}
divizori[i] = n;
}
int main ()
{
long int n , x;
long long int s , v[100100] ;
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>>v[p];
s = 0;
x = v[p];
init( 100 , 2*x );
desc(x);
for( i = 1 ; divizori[i] != -1 ; i++)
for( j = 1 ; j <= (2*x)/divizori[i] ;j++)
ciur[j *divizori[i] ]= -1;
for( j = 1 ; j < 2*x ; j++ )
if(ciur[j] != -1 )
s += ciur[j];
g<<s<<'\n';
}
return 0;
}