我正在尝试解决第 8 个 Project Euler 问题。
找出 1000 位数字中连续五位数字的最大乘积。
我很确定我已经走了。我还尝试了一个更简单的程序,它使用了一个每次都返回 1 的 while 循环。我提供的代码每次也返回 1。
请不要为我提供解决方案。如果可以的话,给我一个地方看看。这是我的代码:
var bigNum = "73167176531330624919225119674426574742355349194934
96983520312774506326239578318016984801869478851843
85861560789112949495459501737958331952853208805511
12540698747158523863050715693290963295227443043557
66896648950445244523161731856403098711121722383113
62229893423380308135336276614282806444486645238749
30358907296290491560440772390713810515859307960866
70172427121883998797908792274921901699720888093776
65727333001053367881220235421809751254540594752243
52584907711670556013604839586446706324415722155397
53697817977846174064955149290862569321978468622482
83972241375657056057490261407972968652414535100474
82166370484403199890008895243450658541227588666881
16427171479924442928230863465674813919123162824586
17866458359124566529476545682848912883142607690042
24219022671055626321111109370544217506941658960408
07198403850962455444362981230987879927244284909188
84580156166097919133875499200524063689912560717606
05886116467109405077541002256983155200055935729725
71636269561882670428252483600823257530420752963450";
var pos1, pos2, pos3, pos4, pos5;
for(var i=1;i<=1000;i+=5) {
for(var j=0;j<=995;j++) {
pos1 = bigNum[j];
}
for(var k=1;k<=996;k++) {
pos2 = bigNum[k];
}
for(var l=2;l<=997;l++) {
pos3 = bigNum[l];
}
for(var m=3;m<=998;m++) {
pos4 = bigNum[m];
}
for(var n=4;n<=999;n++) {
pos5 = bigNum[n];
}
prod = pos1 * pos2 * pos3 * pos4 * pos5;
if(prod>sum) {
sum = prod;
}
}
console.log(sum);
这是我改进的代码:
var prod;
var largest =1;
for(var i=0;i<=995;i++) {
prod=num[i] * num[i +1] * num[i +2] * num[i +3] * num[i + 4];
if(prod>largest) {
largest = prod;
}
}
console.log(largest);