2016-07-12 57 views
2

這段代碼有什麼問題?它不能在控制檯上打印任何內容。 這裏是對問題的描述:Prime Check JavaScript

實現一個javascript函數,該函數接受一個包含整數N的數組,並使用一個表達式來檢查給定的N是否爲素數(也就是說,它是可以整除的,而不僅僅是自身和1) 。

var n = ['2']; 

function isPrime(n) { 

    if (n < 2) { 
     return false; 
    } 

    var isPrime = true; 

    for(var i = 2; i < Math.sqrt(n); i += 1) { 
     if (n % i === 0) { 
     isPrime = false; 
     } 
    } 

    return isPrime; 
} 

return isPrime(n); 
+5

你是怎樣嘗試登錄到控制檯。你從來沒有在你的代碼片段中做過。而且你正在定義一個數組「n」,但將其用作標量值。 – domyos

+0

還是不能打印答案 –

+1

「還是不能打印答案」---這不是一個合適的問題解釋。否則「盡力而爲」是一個有效的答案。 – zerkms

回答

4

代碼中有幾個錯誤。

首先,您需要檢查包含在2和Math.sqrt(n)之間的每個整數。您當前的代碼4.

返回true,我不認爲這是一個函數,所以你需要從return isPrime(n)省略return,並用函數替換至極打印出funnction的返回值,如alertconsole.log

n不是一個數字,它是一個數組。您需要將數字設爲n,或者使用isPrime(n[0])調用該函數。

正確的代碼

var n = 2; 

function isPrime(n) { 

    if (n < 2) { 
     return false; 
    } 

    var isPrime = true; 

    for(var i = 2; i <= Math.sqrt(n); i += 1) { 
     if (n % i === 0) { 
     isPrime = false; 
     } 
    } 

    return isPrime; 
} 

alert(isPrime(n)); 

注意:您可以更改n += 1n++,並且它的工作方式相同。

+1

「一個javascript函數**接受數組**」 – zerkms

+0

@zerkms是的,但他目前的問題是「它不能在控制檯上打印任何東西」 –

+0

@evolutionxbox我其實不知道JQuery,實際上認爲它會縮短。 –

1

n是一個數組,你要訪問的第一個元素數組中,並首先轉換爲數字。

嘗試

return isPrime(parseInt(n[0],10)); 

更換

return isPrime(n); 

你的for循環條件也需要稍加修改

for(var i = 2; i <= Math.sqrt(n); i += 1) { //observe that i is not <= Math.sqrt(n) 
+2

一些解釋可能會有幫助。 – zerkms

+0

現在檢查他們的任務:-) – zerkms

0

一些小的錯誤:

var n = 2;//<--no need to put n in an array 

function isPrime(n) { 
if (n < 2) { 
    return false; 
} 
var isPrime = true; 

for(var i = 2; i < Math.sqrt(n); i += 1) { 
    if (n % i === 0) { 
     isPrime = false; 
    } 
} 
return isPrime; 
} 

isPrime(n);//<--no need for "return" 
+0

所以,4是一個素數 –

+0

好抓!試圖幫助代碼而不是數學。 – grateful

0

至於沒有輸出正在打印,這是因爲您需要使用console.log

return isPrime(n);替換爲console.log(isPrime(n));

+0

雖然它不會解決他們的問題。但這不是你的答案,而是問題不好。 – zerkms

+0

我不認爲這個答案是爲了解決OP所有問題而添加的。如果它有助於解決這個問題,我認爲這是一個有效的答案。 – evolutionxbox

+0

它不能解決所有問題 - 他的主要問題是他無法打印到控制檯。我回答瞭如何做到這一點。我假設這是一個學校的任務,一旦他有了這個,他會測試他的代碼並嘗試解決剩下的問題。 - 哦,我認爲我只是將其解釋爲他的主要問題,但很可能他要求所有的錯誤,我的錯誤 - –

0

全部工作代碼:

var n = ['2', '3', '4', '5', '6', '7']; // you can use as many values as you want function isPrime(n) { if (n < 2) { return false; } var isPrime = true; for (var i = 2; i <= Math.sqrt(n); i += 1) { // Thanks to gurvinder372's comment if (n % i === 0) { isPrime = false; } } return isPrime; } n.forEach(function(value) { // this is so you can iterate your array with js console.log('is ' + value + ' prime or not? ' + isPrime(value)); // this so you can print a message in the console }); /* // Another approach of parsing the data, uncomment this piece of code and comment the one above to see it in action (both will give the same result) for (index = 0; index < n.length; ++index) { console.log('is ' + n[index] + ' prime or not? ' + isPrime(n[index])); // this so you can print a message in the console } */