-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathisEven.js
38 lines (29 loc) · 820 Bytes
/
isEven.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
class DiscreteIntegral {
constructor(exp, intervals) {
this.exponent = exp;
this.intervals = intervals;
}
f(n) {
let fApplied = Math.pow(n, this.exponent);
if (!fApplied) return 0;
return fApplied;
}
calculate(a, b) {
let coefficient = (b - a) / this.intervals;
let startingPoint = this.f(a) / 2;
let endingPoint = this.f(b) / 2;
let sum = 0;
for (let i = 1; i <= this.intervals - 1; i++) {
sum += this.f(a + (i * coefficient));
}
return coefficient * (startingPoint + sum + endingPoint);
}
}
function isEven(n) {
if (n < 0) return false;
integral = new DiscreteIntegral(n, 100);
let left = integral.calculate(-1, 0).toPrecision(5);
let right = integral.calculate(0, 1).toPrecision(5);
return left == right;
}
module.exports = isEven;