 
			
				08.09.2021, 15:40
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 13.10.2020 
					
					
					
						Сообщений: 4
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Как найти простые числа в массиве?
			 
			
		
		
		
		Дан следующий массив                                                                            
let arr = [1, 2, 3, 6, 9, 18]; 
Как с помощью цикла и условных операторов найти в нем простые числа и добавить в новый массив? Если взять отдельное число и проверить на простоту - проблем не возникает, но в массиве сложно. Спасибо! 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				08.09.2021, 15:46
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Brava, 
 arrновый = arrстарый.filter(х=> проверить на простоту - проблем не возникает(х)) 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				08.09.2021, 15:48
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 13.10.2020 
					
					
					
						Сообщений: 4
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 рони, 
 а есть решение без метода filter? 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				08.09.2021, 15:56
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Brava, 
 for () if(проверить на простоту - проблем не возникает(х))arrновый.push(x) 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				08.09.2021, 15:57
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 07.03.2011 
					
					
					
						Сообщений: 1,141
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Решето Эратосфена. 
 
Легких путей определения что число является простым нету. Только честная проверка каждого числа. 
На сложности задачи разложения числа на простые множители и держится современная криптография и алгоритмы хеширования. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				08.09.2021, 22:29
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Кандидат Javascript-наук 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 07.05.2020 
					
					
					
						Сообщений: 108
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
<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>
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				08.09.2021, 23:04
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 od0201, 
 если 14 строка let arr={}, то строка 8 не нужна. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				08.09.2021, 23:49
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 13.03.2013 
					
					
					
						Сообщений: 1,572
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		вариант 
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)
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				12.09.2021, 21:51
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Кандидат Javascript-наук 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 07.05.2020 
					
					
					
						Сообщений: 108
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от рони
			 
		
	 | 
 
	
		od0201, 
 если 14 строка let arr={}, то строка 8 не нужна.
	 | 
 
	
 
 не догнал    
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				12.09.2021, 22:35
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		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>
 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось рони, 12.09.2021 в 23:32.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |