Вывод простых чисел
Всем привет! Нужна помощь с задачей на вывод простых чисел. Не могу понять, почему эта функция не выводит 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, время: 05:44. |