Pagini recente » Cod sursa (job #1664227) | Cod sursa (job #2206027) | Cod sursa (job #2202171) | Rating Mladin Demian (Bearry) | Cod sursa (job #237461)
Cod sursa(job #237461)
/*Raspundeti la N intrebari de tipul: care este suma numerelor Y prime cu un numar X,
si care respecta proprietatea 0 < Y < 2*X.
Date de intrare
Prima linie a fisierului de intrare sum.in contine un numar intreg N.
Pe urmatoarele N linii se afla cate un numar X.
Date de iesire
*/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <iostream>
#include <cstdlib>
#include<fstream>
#define dim 100000
using namespace std;
ifstream f("sum.in");
ofstream g("sum.out");
void fi(int n, int *v)
{
/* functia lui euler cu ciurul lui Eratostene
http://infoarena.ro/forum/index.php?topic=2512.0
v[i] = nr intregilor pozitivi <i si primi cu i
*/
int i,j;
for( i=1;i <= n;i++) v[i]=i-1;
for( i=2;i <= n;i++)
for(j=i+i;j<=n;j=j+i)
v[j]=v[j]-v[i];
}
int main()
{
int n,x, *v,i,max=0;
f>>n;
int *u;
u= new int[n];
for(i=1;i<=n;i++)
{
f>>x;
u[i]=x;
if(x>max) max=x;
}
v = new int [max];
fi(max,v);
for(i=1;i<=n;i++)
{
x=u[i];
g<<2*x*v[x]<<'\n';
}
delete v;
f.close();
g.close();
return EXIT_SUCCESS;
}