2016-07-27 12 views
0

私は数字の次の配列があります番号が奇数/偶数/複合している場合/プライム

var array = [5,9,12,19,23,24,31,44,49,62]; 

をし、私は彼らがどちらかでも、コンポジット、奇数であれば、それぞれ1のために見つけるためにしようとしていますコンポジット、または奇数とプライム。私も、合成されている数字を見つけようとすることから始めました:

for (i = 0; i < array.length; i++) { 
    if (array[i]%2 === 0 && array[i]%i === 0) { 
     console.log(array[i]+" is even and composite") 
    } 
} 

問題は、私は12,24,44,62を取得する必要があるとき、私は唯一の12を得ることです。それは12時に停止するようです。何が問題になる可能性がありますか?

ありがとうございます。

+1

比較 '配列[i]は%私=== 0 'は'配列[i]は'合成数またはではなく、 '配列[i]は'割り切れるかどうかをチェックしているか否かを確認されていません「私」によって。 24,44,62の場合は、24が5で割り切れず、44が7で割り切れず、62が8で割り切れないため、あなたの条件は真ではありません。あなたの条件を再作成する必要があります。番号がコンポジットかどうかを確認してください。 –

+0

どちらも12で5で割り切れるわけではありませんが、それでも何とかそれを示しています。 –

+1

12を評価しているとき、 'i'は2という値を持ちます。これは12で割り切れます。明確にするため、条件は現在、数値が偶数(2で割り切れる)で、配列内のインデックスで割り切れるかどうかをチェックします。 –

答えて

1

各問題を簡単に扱えるようにすることができます。例えば

:コンポジットおよび素数をチェックするために別の関数を記述し、その後、アレイに

function isEven(n) { 
    return (n % 2) === 0 //to get even numbers 
} 

function isOdd(n) { 
    return (n % 2) === 1 //to get odd numbers 
} 

を偶数を見つけます。 yaのためにすべての仕事をすれば楽しいことはありません。あなたは、それはそれを見ているかわからない場合は、単純に、引数としてあなたの前の書かれたテスト機能を渡す配列のためのフィルタ方法を使用することができ、アレイ内の偶数番号を取得する

function isComposite(n) { 
    //Enter check for composite numbers here 
} 

function isPrime(n) { 
    //Enter check for prime numbers here 
} 

してから。しかし、基本的には、配列の各要素がテストに合格してから別の関数を作成するかどうかをチェックします。

array.filter(isEven) // This would create a new array of all the even numbers in your array 

また、関数呼び出しを連鎖して、偶数番号と合成番号を見つけることもできます。

array.filter(isEven).filter(isComposite) //would give you all the even and composite numbers in your array 
関連する問題