Informatică, întrebare adresată de Trollea, 8 ani în urmă

Se consideră un număr natural n. Să se realizeze un program pentru determinarea numărului perechilor (a,b) de numere naturale (a,b <=n) ce au proprietatea că a şi b sunt prime între ele


CinevaFaraNume: Consideri perechile (a,b) si (b, a) diferite?

Răspunsuri la întrebare

Răspuns de CinevaFaraNume
1

Explicație:

Daca (a,b) si (b, a) sunt perechi identice:

\displaystyle\textrm{numarul de perechi} = \sum_{b=1}^n\phi(b)

#include <iostream>

using namespace std;

int indEuler(int x){

int ind = 1, d;

for(d = 2; x != 1; d++){

if(x%d==0){

ind *= (d-1);

x /= d;

while(x%d==0) ind *= d, x /= d;

}

d += (d%2);

}

return ind;

}

int main(){

int n, total = 0;

cin >> n;

for(int b = 1; b <= n; b++){

total += indEuler(b);

}

cout << total;

}

Daca (a,b) si (b,a) sunt perechi diferite, trebuie doar sa dublam rezultatul si sa scadem 1( de la perechea (1,1) ):

#include <iostream>

using namespace std;

int indEuler(int x){

int ind = 1, d;

for(d = 2; x != 1; d++){

if(x%d==0){

ind *= (d-1);

x /= d;

while(x%d==0) ind *= d, x /= d;

}

d += (d%2);

}

return ind;

}

int main(){

int n, total = 0;

cin >> n;

for(int b = 1; b <= n; b++){

total += indEuler(b);

}

total = total * 2 - 1;

cout << total;

}


Trollea: poti sa faci doar cu int main ?? fara int euler ??
CinevaFaraNume: #include <iostream>
using namespace std;

int indEuler(int x){

int ind = 1, d;

for(d = 2; x != 1; d++){

if(x%d==0){

ind *= (d-1);

x /= d;

while(x%d==0) ind *= d, x /= d;

}

d += (d%2);

}

return ind;

}

int main(){

int n, total = 0;

cin >> n;

for(int b = 1; b <= n; b++){
int ind = 1, d;

for(d = 2; x != 1; d++){

if(x%d==0){

ind *= (d-1);

x /= d;

while(x%d==0) ind *= d, x /= d;

}

d += (d%2);

}


}

total = total * 2 - 1;

cout << total;

}

Citește mai multe pe Brainly.ro - https://brainly.ro/tema/6067684#readmore
CinevaFaraNume: int main(){

int n, total = 0;

cin >> n;

for(int b = 1; b <= n; b++){
int ind = 1, d;

for(d = 2; x != 1; d++){

if(x%d==0){

ind *= (d-1);

x /= d;

while(x%d==0) ind *= d, x /= d;

}

d += (d%2);

}

total += ind;
}

total = total * 2 - 1;

cout << total;

}

Citește mai multe pe Brainly.ro - https://brainly.ro/tema/6067684#readmore
Trollea: ms mult !!!
CinevaFaraNume: int main(){

int n, total = 0;

cin >> n;

for(int b = 1; b <= n; b++){
int ind = 1, d;
int x = b;for(d = 2; x != 1; d++){

if(x%d==0){

ind *= (d-1);

x /= d;

while(x%d==0) ind *= d, x /= d;

}

d += (d%2);

}

total += ind;
}

total = total * 2 - 1;

cout << total;

}
CinevaFaraNume: Ultima varianta e cea corecta. Scuze, dar enter nu se comporta cum trebuie aici.
Alte întrebări interesante