Cerința
Se dau n
numere naturale nenule. Aflaţi pentru fiecare număr dat x
, câte numere naturale nenule mai mici sau egale cu x
sunt prime cu x
?
Date de intrare
Fișierul de intrare eratostene3.in
conține pe prima linie numărul n
, iar pe a doua linie n
numere naturale separate prin spații.
Date de ieșire
Fișierul de ieșire eratostene3.out
va conține pentru fiecare număr x
din fişierul de intrare, numărul de numere naturale nenule mai mici sau egale cu x
, prime cu x
.
Restricții și precizări
1 ≤ n ≤ 100.000
- numerele de pe a doua linie a fișierului de intrare vor fi mai mici decât
1.000.000
Exemplu
eratostene3.in
3 4 7 12
eratostene3.out
2 6 4
Explicație
Numerele prime cu 4
, mai mici sau egale cu 4
, sunt: 1,3
.
Numerele prime cu 7
, mai mici sau egale cu 7
, sunt: 1,2,3,4,5,6
.
Numerele prime cu 12
, mai mici sau egale cu 12
, sunt: 1,5,7,11
.
Vezi Indicatorul lui Euler.
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema Eratostene3:
#include <fstream>
using namespace std;
ifstream f("eratostene3.in");
ofstream g("eratostene3.out");
int i,j,x,n;
int p[1000000], phi[1000000];
int main()
{
p[1] = 1;
phi[1] = 1;
for(i = 1; i <= 999999; i++)
phi[i] = i;
for(i = 2; i <= 999999; i++)
if(p[i]==0)
{
phi[i] = i - 1;
j = i + i;
while(j <= 999999)
{
phi[j] = phi[j] / i;
phi[j] = phi[j] * (i - 1);
p[j] = 1;
j = j + i;
}
}
f >> n;
for(i = 1; i <= n; i++)
{
f >> x;
g << phi[x] << " ";
}
return 0;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #3314 Eratostene3
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #3314 Eratostene3 de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!