可能重复:
Is there a bignum library for JavaScript?
Strange syntax of Number methods in JavaScript
我刚写了一些代码来找出Project Euler问题。
我一直在......
未捕获的SyntaxError:意外的标记ILLEGAL
我无法在我的代码中看到语法错误...
我使用的数字是1000位数。我在Chrome控制台中运行
Number.MAX_VALUE > 7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450
得到false
。长号。
是否有可以运行我的代码的解释器?
如果需要,这是代码......
var num = 7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450.toString();
var max = 0,
length = num.length;
for (var i = 0; i < length; i++) {
var consecTotal = 1,
limit = i + 5;
for (var j = i; j < limit; j++) {
consecTotal *= parseInt(num.substr(j, 1), 10);
}
max = Math.max(max, consecTotal);
}
console.log(max);
问题是找到最大数字,它是5个连续数字的乘积。我不会逐字逐句地输入,因为我觉得Project Euler对网上发布的答案感到皱眉(我甚至不确定我的工作是否可行)。
我转向JavaScript,因为我不确定如何设置int
来处理C中的数字。
答案 0 :(得分:4)
实际解释Uncaught SyntaxError: Unexpected token ILLEGAL
。
原因实际上是......
...20752963450.toString();
^-------- ...the dot after a number is treated as a decimal point
Therefore this doesn't make sense.
But if you add a space in front of the dot, then it will work because
now JavaScript uses it to access the toString() method.
12323 .toString() // this will work as you'd expect it to if you come from Ruby or the like
但是,如果你添加空格num
将是无限的。所以你必须看看awoodland对BigNum实现的回答。
答案 1 :(得分:2)
听起来你正在寻找一个大数学课。似乎Javascript有一个,如果你想用C做,你可以使用gmp。
答案 2 :(得分:0)
首先,如果要将其用作字符串,则num变量应该是正确的字符串文字。你似乎在做什么。我从未见过你试图在那里使用的符号,我无法在Chrome或IE中使用它。只需使用:
var num = '73167176531330....';
其次,你的内循环永远不会终止。 j总是小于j + 5.你是否意味着j&lt;我+ 5?
第三,你需要让你的外环只去i&lt;长度 - 4.否则当我接近结束长度时,你将超越然后在内循环中结束你的“num”字符串。
如果我做出这些改动,我会得到答案。我不知道你是否正在寻找答案。