Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.02.2016, 12:03
Интересующийся
Отправить личное сообщение для Maine Посмотреть профиль Найти все сообщения от Maine
 
Регистрация: 23.02.2016
Сообщений: 19

Вывод простых чисел
Всем привет! Нужна помощь с задачей на вывод простых чисел. Не могу понять, почему эта функция не выводит 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);
Ответить с цитированием
  #2 (permalink)  
Старый 23.02.2016, 12:19
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

Maine,
а почему она должна выводить 1 и 2, если в 8 строчке цикл с i = 2 ?
Ответить с цитированием
  #3 (permalink)  
Старый 23.02.2016, 12:22
Интересующийся
Отправить личное сообщение для Maine Посмотреть профиль Найти все сообщения от Maine
 
Регистрация: 23.02.2016
Сообщений: 19

потому что number = 1
Ответить с цитированием
  #4 (permalink)  
Старый 23.02.2016, 12:29
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

Сообщение от Maine Посмотреть сообщение
потому что number = 1
И что? 17 строчка не сработает, потому что в цикл не зайдет и значение isPrime не поменяется.
Ответить с цитированием
  #5 (permalink)  
Старый 23.02.2016, 12:59
Интересующийся
Отправить личное сообщение для Maine Посмотреть профиль Найти все сообщения от Maine
 
Регистрация: 23.02.2016
Сообщений: 19

В результате выдает
[3, 5, 7]
Ответить с цитированием
  #6 (permalink)  
Старый 23.02.2016, 13:14
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

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/Простое_число
Ответить с цитированием
  #7 (permalink)  
Старый 23.02.2016, 13:20
Аватар для Coriolan161
Профессор
Отправить личное сообщение для Coriolan161 Посмотреть профиль Найти все сообщения от Coriolan161
 
Регистрация: 21.11.2015
Сообщений: 440

Maine,
Если рассматривать такой подход к определению простоты, то не надо проверять делимость на 2, 3 и до самого number. Это лишнее. Достаточно проверять до округленного корня из number. А лучше вообще убрать из рассмотрения проверки четные числа, поэтому делай не
number++
, а
number+=2

А почему не выводит тебе товарищ пояснил
Ответить с цитированием
  #8 (permalink)  
Старый 23.02.2016, 13:53
Интересующийся
Отправить личное сообщение для Maine Посмотреть профиль Найти все сообщения от Maine
 
Регистрация: 23.02.2016
Сообщений: 19

Написала так. Если поставить 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));
Ответить с цитированием
  #9 (permalink)  
Старый 23.02.2016, 15:23
Аватар для Coriolan161
Профессор
Отправить личное сообщение для Coriolan161 Посмотреть профиль Найти все сообщения от Coriolan161
 
Регистрация: 21.11.2015
Сообщений: 440

Maine,
Ща, погодь
Ответить с цитированием
  #10 (permalink)  
Старый 23.02.2016, 15:40
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

Просмотров 1,139 Сегодня, 12:03 Сегодня, 15:23 за 3 часа кило просмотров ???
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
складывае двух чисел и вывод их в html rusVolk Мобильный JavaScript 11 14.01.2016 21:31
Сложение чисел и их вывод rusVolk Events/DOM/Window 10 13.01.2016 21:43
Генератор случайных чисел (помогите с задачкой) GentleGoose Общие вопросы Javascript 2 28.07.2014 12:53
Красивый вывод больших чисел. Perkovec Общие вопросы Javascript 2 23.04.2014 12:56
НОД более чем 2-х чисел Demath Общие вопросы Javascript 4 06.01.2013 05:27