Merge pull request #550 from sandyboypraper/master

Added EulersTotientFunction function to the Maths Folder
This commit is contained in:
Omkarnath Parida
2020-12-19 21:43:18 +05:30
committed by GitHub
4 changed files with 41 additions and 2 deletions

View File

@ -0,0 +1,28 @@
/*
author sandyboypraper
Here is the EulerTotientFunction.
it is also represented by phi
so EulersTotientFunction(n) (or phi(n)) is the count of numbers in {1,2,3,....,n} that are relatively
prime to n, i.e., the numbers whose GCD (Greatest Common Divisor) with n is 1.
*/
const gcdOfTwoNumbers = (x, y) => {
// x is smaller than y
// let gcd of x and y is gcdXY
// so it devides x and y completely
// so gcdXY should also devides y%x (y = gcdXY*a and x = gcdXY*b and y%x = y - x*k so y%x = gcdXY(a - b*k))
// and gcd(x,y) is equals to gcd(y%x , x)
return x === 0 ? y : gcdOfTwoNumbers(y % x, x)
}
const eulersTotientFunction = (n) => {
let countOfRelativelyPrimeNumbers = 1
for (let iterator = 2; iterator <= n; iterator++) {
if (gcdOfTwoNumbers(iterator, n) === 1) countOfRelativelyPrimeNumbers++
}
return countOfRelativelyPrimeNumbers
}
export { eulersTotientFunction }

View File

@ -0,0 +1,11 @@
import { eulersTotientFunction } from '../EulersTotientFunction'
describe('eulersTotientFunction', () => {
it('is a function', () => {
expect(typeof eulersTotientFunction).toEqual('function')
})
it('should return the phi of a given number', () => {
const phiOfNumber = eulersTotientFunction(10)
expect(phiOfNumber).toBe(4)
})
})

2
package-lock.json generated
View File

@ -9625,4 +9625,4 @@
}
}
}
}
}

View File

@ -27,4 +27,4 @@
"jest": "^26.4.2",
"standard": "^14.3.4"
}
}
}