Вывод простых чисел
Всем привет! Нужна помощь с задачей на вывод простых чисел. Не могу понять, почему эта функция не выводит 1 и 2.
function printPrime(limit) { var result = [], isPrime = false, number = 1; for (number; number < limit; number++) { for (i = 2; i < number; i++) { if(number%i == 0 && number != i) { isPrime = false; break; } else { isPrime = true; } } if (isPrime) { result.push(number); } } console.log(result); } printPrime(10); |
Maine,
а почему она должна выводить 1 и 2, если в 8 строчке цикл с i = 2 ? |
потому что number = 1
|
Цитата:
|
В результате выдает
[3, 5, 7] |
Maine,
<script> function printPrime(limit) { var result = [], isPrime = false, number = 1; for (number; number < limit; number++) { for (i = 2; i <= number; i++) { if (number % i == 0 && number != i) { isPrime = false; break; } else { isPrime = true; } } if (isPrime) { result.push(number); } } console.log(result); } printPrime(10); </script> https://ru.wikipedia.org/wiki/Простое_число |
Maine,
Если рассматривать такой подход к определению простоты, то не надо проверять делимость на 2, 3 и до самого number. Это лишнее. Достаточно проверять до округленного корня из number. А лучше вообще убрать из рассмотрения проверки четные числа, поэтому делай не number++, а number+=2 А почему не выводит тебе товарищ пояснил |
Написала так. Если поставить number+=2, тогда не выводит 2, но выводит 1 несмотря на то, что i = 2
function printPrime(limit) { var result = [], isPrime = false, number = 1, checkNumber = Math.floor(Math.sqrt(limit)); console.log(checkNumber); for (number; number < limit; number+=2) { for (i = 2; i <= checkNumber; i++) { if(number%i == 0 && number != i) { isPrime = false; break; } else { isPrime = true; } } if (isPrime) { result.push(number); } } console.log(result); } $('#calculate').click(printPrime(500)); |
Maine,
Ща, погодь |
:blink: Просмотров 1,139 Сегодня, 12:03 Сегодня, 15:23 за 3 часа кило просмотров ???
|
Часовой пояс GMT +3, время: 11:34. |