2015-11-16 3 views
0

Je suis venu par la mise en œuvre suivante de la fonction d'Euler-totientImpossible de comprendre la fonction d'Euler

int fi(int n) {   
    int result = n;   
    for(int i=2;i*i <= n;i++) {    
     if (n % i == 0) result -= result/i;    
     while (n % i == 0) n /= i;   
    }   
    if (n > 1) result -= result/n;   
    return result;   
    } 

Je suis incapable de comprendre le but des états de résultats suivants
result -= result/i;
result -= result/n;

Répondre

1

La déclaration:

result -= result/i; 

est égal à:

result -= (result/i); 

qui est égal à:

quotient = result/i; 
result -= quotient; 

qui est égal à:

quotient = result/i; 
result = result - quotient; 

La deuxième déclaration est très similaire.