JavaScript
Заполнение массива случайными простыми числами в диапазоне от 2 до n
Заполнить массив с фиксированной четной длиной простыми числами в диапазоне от 5 до 15 так, что бы у каждого числа была пара. Язык: Javascrypt. К примеру в результате работы кода должен получиться массив, похожий на этот -> [5, 7, 5, 11, 13, 7, 13, 11]
Если изначально дан диапазон, можно не заморачиваться с функцией нахождения простых чисел.
let arr = [5, 7, 11, 13];
console.log( arr.concat(arr).sort( (a,b) => Math.random() < 0.5 ? -1 : 1 ) );
______________
К начальному массиву приклеивается еще один такой же, потом сортируется в случайном порядке.
______________
Решение для любого диапазона:
function bubu(start, end) {
let prime = [];
let sieve = new Array(end).fill(true);
for (let i = 2; i < end; i++) {
if (sieve[i]) {
if (start <= i) prime.push(i);
for (let j = i; j < end; j += i) sieve[j] = false;
}
}
return prime.concat(prime).sort( (a,b) => Math.random() - 0.5 );
}
console.log(bubu(11, 38));
https://ru.wikipedia.org/wiki/Решето_Эратосфена
let arr = [5, 7, 11, 13];
console.log( arr.concat(arr).sort( (a,b) => Math.random() < 0.5 ? -1 : 1 ) );
______________
К начальному массиву приклеивается еще один такой же, потом сортируется в случайном порядке.
______________
Решение для любого диапазона:
function bubu(start, end) {
let prime = [];
let sieve = new Array(end).fill(true);
for (let i = 2; i < end; i++) {
if (sieve[i]) {
if (start <= i) prime.push(i);
for (let j = i; j < end; j += i) sieve[j] = false;
}
}
return prime.concat(prime).sort( (a,b) => Math.random() - 0.5 );
}
console.log(bubu(11, 38));
https://ru.wikipedia.org/wiki/Решето_Эратосфена
Евгений Скробачев
На выходе должен получиться массивый похожий на это. --> [5, 7, 5, 11, 13, 7, 13, 11]. Массив по типу ---> [5, 7, 5, 11, 7, 11, 13, 11, 13] неверный, поскольку у последнего числа 11 нет пары.
Я такое придумал. И у каждого простого числа есть одно парное число, как и требовалось
>>>
arr = [];
for (var n = 5; n <= 16; n++) {
test = true;
for (var i = n - 1; i > 1; --i) {
if (n % i == 0) {
test = false;
break;
}
}
if(test) {
arr.push(n,n) // длина массива будет фиксированно четной
}
}
console.log(arr);
//получили массив попарных простых чисел от 5 до 15
// теперь перемешиваем их в случайном порядке
// у каждого числа должна быть пара
function randArr(n) {
return Math.floor(Math.random()* n); // n = 8
}
function mergeArr(a) {
for (var i = 0; i < a.length; i++) {
var j = randArr(a.length); // arr. length = 8
var k = randArr(a.length);
var t = a[j];
a[j] = a[k];
a[k] = t;
}
return a;
}
console.log('Итог: ', mergeArr(arr));
>>>
arr = [];
for (var n = 5; n <= 16; n++) {
test = true;
for (var i = n - 1; i > 1; --i) {
if (n % i == 0) {
test = false;
break;
}
}
if(test) {
arr.push(n,n) // длина массива будет фиксированно четной
}
}
console.log(arr);
//получили массив попарных простых чисел от 5 до 15
// теперь перемешиваем их в случайном порядке
// у каждого числа должна быть пара
function randArr(n) {
return Math.floor(Math.random()* n); // n = 8
}
function mergeArr(a) {
for (var i = 0; i < a.length; i++) {
var j = randArr(a.length); // arr. length = 8
var k = randArr(a.length);
var t = a[j];
a[j] = a[k];
a[k] = t;
}
return a;
}
console.log('Итог: ', mergeArr(arr));
Константин Ванченко
А вообще всё даже проще.
arr = [3,5,7,11,13];
arr2 = arr.concat(arr.slice());
console.log(arr2);
for (var i = 0; i < arr2.length; i++) {
j = Math.floor(Math.random() * arr2.length);
k = Math.floor(Math.random() * arr2.length);
t = arr2[k];
arr2[k] = arr2[j];
arr2[j] = t;
}
console.log(arr2)
arr = [3,5,7,11,13];
arr2 = arr.concat(arr.slice());
console.log(arr2);
for (var i = 0; i < arr2.length; i++) {
j = Math.floor(Math.random() * arr2.length);
k = Math.floor(Math.random() * arr2.length);
t = arr2[k];
arr2[k] = arr2[j];
arr2[j] = t;
}
console.log(arr2)
Похожие вопросы
- Почему именно эта формула взята для random числа из диапазона ?
- Как вычислять простые числа?
- Если в массиве меньше 2-х чисел, вернуть строку, сообщающую, что чисел недостаточно.
- Найти положительное число n
- Дан целочисленный массив размера N.Удалить из массива все элементы, встречающиеся менее трёх раз
- Помогите избавиться от пустых значений в массиве.
- Как найти максимальное значение в массиве массивов?
- Программирование Джава. Написать код на упорядочивание массивов.
- вопрос про массивы
- Нужна помощь в массиве JavaScript