0
代碼之間的計算方法的差異我一直在尋找一個答案從項目歐拉問題,我發現一個在這裏是什麼在C#和Javascript
http://www.mathblog.dk/triangle-number-with-more-than-500-divisors/
int number = 0;
int i = 1;
while(NumberOfDivisors(number) < 500){
number += i;
i++;
}
private int NumberOfDivisors(int number) {
int nod = 0;
int sqrt = (int) Math.Sqrt(number);
for(int i = 1; i<= sqrt; i++){
if(number % i == 0){
nod += 2;
}
}
//Correction if the number is a perfect square
if (sqrt * sqrt == number) {
nod--;
}
return nod;
}
於是,我就實現在JavaScript中的相同的解決方案,但它不給我相同的結果。
var number = 0;
var i = 1;
while (numberOfDivisors(number) < 500) {
number += i;
i++;
}
console.log(number);
function numberOfDivisors(num) {
var nod = 0;
var sqr = Math.sqrt(num);
for (i = 1; i <= sqr; i++) {
if (num % i === 0) {
nod += 2;
}
}
if (sqr * sqr == num) {
nod--;
}
return nod;
}
我測試在C#的其他代碼,它給出了合適的解決方案。我想知道我是否犯了一個錯誤,或者他們在某些我不知道的方面工作不同。
你碰巧注意到任何* par關於JS版本的結果有什麼不同?它可能不是一個整數?什麼? –
「它提供了正確的解決方案」 - 什麼是正確的解決方案? –
當你調試這兩個代碼片段時,他們的行爲在哪裏完全不同,而且它們究竟有什麼不同? – jmcilhinney