class Divisores { int contaDivisores( int n ) { int númeroDeDivisores = 2; // contabiliza 1 e n int candidatoADivisor = 2; // começa com 2 // gera candidatos até n/2 while( candidatoADivisor <= n/2 ) { if( n % candidatoADivisor == 0 ) númeroDeDivisores++; candidatoADivisor++; } return númeroDeDivisores; } // conta divisores primos pelo método do Crivo de Erastóstenes int contaDivisoresPrimos( int n ) { int num = n; // cópia de n int nDivisoresPrimos = 0; // não contabiliza 1 e n int candidatoADivisor = 2; // começa com 2 // gera candidatos até n/2 while( num > 1 && candidatoADivisor <= n/2 ) { if( num % candidatoADivisor == 0 ) { nDivisoresPrimos++; do num = num / candidatoADivisor; while ( num % candidatoADivisor == 0); } candidatoADivisor++; } return nDivisoresPrimos; } }