Cod sursa(job #2532842)
Utilizator | Data | 28 ianuarie 2020 14:37:32 | |
---|---|---|---|
Problema | Sum | Scor | 45 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.89 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream f("sum.in");
ofstream g("sum.out");
int n,x,i,j;
int v[317];
bool c[200001];
int p[9593], nrp;
int fact[100], nrf;
int main()
{
for (i=2;i<=100000;i++)
if (!c[i])
{
nrp++;
p[nrp]=i;
for (j=i*2;j<=100000;j+=i)
c[j]=1;
}
f>>n;
while (n--)
{
f>>x;
nrf=0;
for (i=1;p[i]<=x;i++)
if (x%p[i]==0)
{
nrf++;
fact[nrf]=p[i];
}
x*=2;
memset(c, 0, x+1);
long long s=(x*(x+1))/2;
for (i=1;i<=nrf;i++)
for (j=fact[i];j<=x;j+=fact[i])
{
if (!c[j])
s-=j;
c[j]=1;
}
g<<s<<"\n";
}
return 0;
}