2016-07-27 3 views
0

У меня есть следующий массив чисел:Пытаясь найти, если числа четные/нечетные/композитный/премьер

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

, и я пытаюсь выяснить, для каждого из них, если они либо даже и композита, нечетных и композитный, или нечетный и простой. Я начал с попытки найти номера, которые даже и композит:

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, когда я должен получить 12,24,44,62. Кажется, он остановился на 12. Что может быть проблемой?

спасибо.

+1

Сравнение 'массив [я]% я === 0 'не проверяет' ли массив [я] 'является составным числом или нет, но вместо того, чтобы проверять' ли массив [я] 'делится by 'i'. Для случаев 24, 44 и 62 они не делают ваше условие истинным, потому что 24 не делится на 5, 44 не делится на 7, а 62 не делится на 8. Вам нужно переделать свое условие на проверьте, является ли число составным или нет. –

+0

Ну, ни один из них не делится на 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 
} 

затем написать другую функцию для проверки составных и простых чисел. Не будет весело, если я сделаю всю работу за тебя.

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 
Смежные вопросы