Как найти простые числа в массиве?
Дан следующий массив
let arr = [1, 2, 3, 6, 9, 18]; Как с помощью цикла и условных операторов найти в нем простые числа и добавить в новый массив? Если взять отдельное число и проверить на простоту - проблем не возникает, но в массиве сложно. Спасибо! |
Brava,
arrновый = arrстарый.filter(х=> проверить на простоту - проблем не возникает(х)) |
рони,
а есть решение без метода filter? |
Brava,
for () if(проверить на простоту - проблем не возникает(х))arrновый.push(x) |
Решето Эратосфена.
Легких путей определения что число является простым нету. Только честная проверка каждого числа. На сложности задачи разложения числа на простые множители и держится современная криптография и алгоритмы хеширования. |
<body> </body> <script> const arr1=[1, 2, 3, 6, 9, 18,13,17] const arr2=primeNumbers(Math.max(...arr1)) let arr3=[] for (let i=0; i<=arr1.length; i++){ for (let j=0; j<arr2.length; j++){ if(arr1[i]===arr2[j]) arr3.push(arr1[i]) } } document.write(arr3) function primeNumbers (n){ let arr=[] for (let i=2; i<=n; i++){ let f=true for (let j=0; j<arr.length; j++){ if (i%arr[j]===0){ f=false break; } } if (f){ arr.push(i) } } return (arr) } </script> |
od0201,
если 14 строка let arr={}, то строка 8 не нужна. |
вариант
const isPrime = n => { //можно усовершенствовать if (n === 2 || n === 3) return true if (n <= 1 || n % 2 === 0 || n % 3 === 0) return false const sqrt = Math.sqrt(n); for (let i = 5; i <= sqrt; i += 2) if (n % i === 0) return false return true } const arr = [1, 2, 3, 6, 9, 18, 13, 17] //const res = arr.filter(isPrime) const res = [] for (let i = 0; i < arr.length; i++) isPrime(arr[i]) && res.push(arr[i]) alert(res) console.log(res) |
Цитата:
|
od0201,
<body> <script> const arr1 = [1, 2, 3, 6, 9, 18, 13, 17]; const arr2 = primeNumbers(Math.max(...arr1)); let arr3 = []; for (let i of arr1) { if (i in arr2) arr3.push(i) } document.write(arr3) function primeNumbers(n) { let arr = {}; f: for (let i = 2; i <= n; i++) { for (let j in arr) { if (i % j === 0) continue f; } arr[i] = true } return (arr) } </script> </body> |
Часовой пояс GMT +3, время: 22:33. |