Răspuns :
Răspuns:
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("eratostene3.in");
ofstream fout ("eratostene3.out");
int main()
{
int n, x, y, C, cx;
fin >> n;
for (int i = 1; i <= n; i++)
{
fin >> x;
C = 0;
for (int j = 1; j <= x; j++)
{
y = j;
cx = x;
while (y != cx)
{
if (cx>y)
cx = cx - y;
else y = y - cx;
}
if (y == 1)
C++;
}
fout << C;
}
fin.close();
fout.close();
return 0;
}
Explicație:
Dupa fiecare numar citit in variabila x, contorul C (care contorizeaza cate numere mai mici sau egale cu x sunt prime cu acesta) este 0. Parcurgem toate numerele mai mici sau egale cu x (adica de la 1 la x) cu variabila j, dar pentru a nu pierde valorile memorate in variabilele x si j, le memoram in alte variabile, si anume cx si y. Astfel, cx memoreaza valoarea lui x, iar y memoreaza valoarea lui j. Structura "while" care urmeaza dupa asta calculeaza cmmdc al celor 2 numere, iar dupa ce iesim din "while", y si cx o sa fie egale, ambele memorand cmmdc al numerelor x si j, care ne intereseaza. Daca y (sau cx) este 1, inseamna ca numerele sunt prime intre ele, deci prin urmare, contorul (adica C) se mareste cu 1. Repetam aceeasi procedura pentru celelalte numere din intervalul [1;x], iar la final il afisam pe C. Dupa asta, citim inca un numar x si procedam la fel ca pana acum.
Daca ai nelamuriri, nu ezita sa mi le comunici. :)
Vă mulțumim că ați vizitat site-ul nostru web care acoperă despre Informatică. Sperăm că informațiile furnizate v-au fost utile. Nu ezitați să ne contactați dacă aveți întrebări sau aveți nevoie de asistență suplimentară. Ne vedem data viitoare și nu ratați să marcați.