I'm a beginning programmer, and am trying to solve Project Euler Problem 8 (finding the thirteen adjacent digits with the greatest product). Here is my code:
var n = "7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450";
function multiplyNext13(a){
var result = 1;
for (i = a; i < a + 13; i++){
result *= Number(n[i]);
}
return result;
}
function getAnswer(){
var answer = 5000940;
for (i = 0; i < 988; i++){
if (multiplyNext13(i) > answer){
answer = multiplyNext13(i);
}
}
document.getElementById("a").innerHTML = answer;
}
The function getAnswer() keeps giving me answer = 0, but I don't know what's wrong. I tested the function multiplyNext13() and I believe it's working properly.
What's wrong with this code? Why isn't it working?
You have only one variable i in your whole program, because you failed to declare it with var.
This means each time you enter the loop in multiplyNext13 you also advance the loop in getAnswer.
This also means the value you set in answer = multiplyNext13(i); isn't the same that the one you just computed in if (multiplyNext13(i) > answer){ (note that this double computation also makes your code slower).
Change
for (i = a; i < a + 13; i++){
to
for (var i = a; i < a + 13; i++){
(and of course the same for the other loop).
Once I fix that, I get this result : 23514624000
Demonstration
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With