Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.09.2017, 13:51
Аспирант
Отправить личное сообщение для Vardges Посмотреть профиль Найти все сообщения от Vardges
 
Регистрация: 28.08.2017
Сообщений: 30

найти простое число
Добрый день. Нужно получить рандомное число и узнать простое ли оно.
getRandomNumber();
function getRandomNumber(){
	var x=parseInt(Math.random()*20);
	console.log(x);
	for (var i=2;i<x;i++){
		var j=1;
		if(x>2 && x%j==0 && x%i!==0){
				var number=x+" простое";
		}else{
			var number=x +" Err";
		}	
	}
	document.write('<br>'+number)

Ошибка в if. Выдает все числа простыми, но не могу понять в чем ошибка.
Ответить с цитированием
  #2 (permalink)  
Старый 11.09.2017, 14:51
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

getRandomNumber();
function getRandomNumber(){
	var x=parseInt(Math.random()*20),
		res=true;
	
	for (var i=2;i<x;i++){
		if(x<=1 || x%i==0){
			res=false;
			break;
		}	
	};

	var number=(x>1 && res)?x+" простое":x +" Err";
	alert(number);
};

Последний раз редактировалось Nexus, 11.09.2017 в 14:54.
Ответить с цитированием
  #3 (permalink)  
Старый 11.09.2017, 14:56
Аспирант
Отправить личное сообщение для Vardges Посмотреть профиль Найти все сообщения от Vardges
 
Регистрация: 28.08.2017
Сообщений: 30

var number=(x>1 && res)?x+" простое":x +" Err";
    alert(number);

эта часть слишком сложна для моего уровня, можно все это написать развернуто и пошагово,чтоб я понял.И что делает промежуточная (res).Заранее спасибо
Ответить с цитированием
  #4 (permalink)  
Старый 11.09.2017, 15:00
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

var number=(x>1 && res)?x+" простое":x +" Err";

аналогично
if(x>1 && res)  {
number=x+" простое";
}
else {
number = x +" Err";

}
Ответить с цитированием
  #5 (permalink)  
Старый 11.09.2017, 15:30
Аспирант
Отправить личное сообщение для Vardges Посмотреть профиль Найти все сообщения от Vardges
 
Регистрация: 28.08.2017
Сообщений: 30

Спасибо Большое
Ответить с цитированием
  #6 (permalink)  
Старый 11.09.2017, 15:48
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

зачем проверять лишнее ...
for (var i=2;i<x;i++){
for (var i=2;i<=Math.sqrt(x);i++){
Ответить с цитированием
  #7 (permalink)  
Старый 11.09.2017, 16:26
Новичок на форуме
Отправить личное сообщение для Бипач Посмотреть профиль Найти все сообщения от Бипач
 
Регистрация: 11.09.2017
Сообщений: 9

Я как-то так делала

function calculateDividersCount(input) {
document.getElementById('para').innerHTML = '';
var count = 0;
for (var i = 0; i <= input; i++) {
if (input % i == 0) {
count++;
}
}
return count;
}

function myFunction(input) {
var result = "";
for (var i = 0; i <= input; i++) {
if (calculateDividersCount(i) == 2) {
result += i;
result += ',';
result += ' ';
}
}
return result.substring(0, result.length-2);
}



function displayDividersCount(){
var userInput = parseInt(document.getElementById('from').value);

document.getElementById('para').innerHTML = myFunction(userInput) + '';
}
Ответить с цитированием
  #8 (permalink)  
Старый 11.09.2017, 17:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

Бипач,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
  #9 (permalink)  
Старый 07.02.2020, 13:13
Интересующийся
Отправить личное сообщение для RuBrain Посмотреть профиль Найти все сообщения от RuBrain
 
Регистрация: 20.04.2018
Сообщений: 21

Сообщение от рони Посмотреть сообщение
зачем проверять лишнее ...
for (var i=2;i<x;i++){
for (var i=2;i<=Math.sqrt(x);i++){
Можете объяснить, почему вы корень тут извлекли?
Ответить с цитированием
  #10 (permalink)  
Старый 07.02.2020, 13:25
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

Сообщение от RuBrain Посмотреть сообщение
Можете объяснить, почему вы корень тут извлекли?
нет смысла проверять делимость на числа, более крупные чем корень, ибо если среди них есть делитель, то парный ему делитель меньше корня, и мы бы на него наткнулись.

я бы ещё слегка ускорил
function isPrime(num) {
  if (num < 2 || num % 2 === 0) return false;
  for (var i = 3, sqrt = Math.sqrt(x); i <= sqrt; i += 2) {
    if (num % i === 0) return false;
  }
  return true;
}
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти число в массиве чисел Михаил94Связь Общие вопросы Javascript 19 05.06.2016 22:05
Найти число в строке и вывести его nikto93i7 Общие вопросы Javascript 8 03.12.2015 11:23
Как найти повторяющееся число?? Brook Events/DOM/Window 2 21.08.2013 19:41
Как найти наибольшее число и ввести его на экран? Ivan152 Оффтопик 2 20.05.2012 20:13
Найти и умножить число stepan86 Общие вопросы Javascript 17 05.08.2009 13:57