Pagini recente » Borderou de evaluare (job #262208) | Borderou de evaluare (job #2274365) | Borderou de evaluare (job #1431439) | Cod sursa (job #1914655) | Cod sursa (job #2917651)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream cin ("sum.in");
ofstream cout ("sum.out");
int N,x,ciur[200001],luat[200001];
unsigned long long S;
vector <int> prime;
queue <int> Q;
void Ciurul_lui_Eratostene ()
{
ciur[0]=1;
ciur[1]=1;
for (int i=2; i<200001; ++i)
for (int j=2; i*j<200001; ++j)
ciur[i*j]=1;
}
void Clear()
{
while (!Q.empty()){
luat[Q.front()]=0;
Q.pop();
}
}
int main()
{
Ciurul_lui_Eratostene();
for (int i=0; i<200001; ++i)
if (!ciur[i]) prime.push_back(i);
cin>>N;
for (int I=1; I<=N; ++I)
{
cin>>x;
int x2=x*2;
S=x2*(x2+1)/2;
for (int i=0; i<prime.size() && prime[i]<=x2; ++i)
if (x%prime[i]==0)
{
int a=prime[i];
for (int j=a; j<=x2; j+=a)
if (!luat[j]){
S-=j;
luat[j]=1;
Q.push(j);
}
}
Clear();
cout<<S<<"\n";
}
return 0;
}