mathball
Version:
A JavaScript library for Competitive Programming
31 lines (24 loc) • 525 B
JavaScript
;
/* count of numbers having gcd 1 till num
* Function: phi()
*/
var validate = require('../validation/non-negative-integer');
function phi(num) {
var result = num;
for (var i = 3; i <= Math.sqrt(num); i = i + 1) {
if (num % i == 0) {
while (num % i == 0) {
num = num / i;
}
result = result - result / i;
}
}
if (num > 1) {
result = result - result / num;
}
return result;
}
module.exports = function (num) {
validate(num, 'phi');
return phi(num);
};