Вернуться   Дизайнерский форум » ВЕБ-ПРОГРАММИРОВАНИЕ » HTML, CSS, JavaScript

Вычислить сумму всех простых чисел. Задачка на JavaScript

Обсуждение темы Вычислить сумму всех простых чисел. Задачка на JavaScript в разделе HTML, CSS, JavaScript, часть категории ВЕБ-ПРОГРАММИРОВАНИЕ; Вот почти готовая задачка, но она работает немного не корректно помогите пожалуйста подправить. Задачка - На экране в форме вводятся 10 вещественных чисел. ...


Закрытая тема
 
Опции темы
Старый 27.10.2010, 20:51   #1
Вот почти готовая задачка, но она работает немного не корректно помогите пожалуйста подправить. Задачка - На экране в форме вводятся 10 вещественных чисел. Вычислите сумму всех простых чисел. Дело в том что данная программа считает и простые и вещественные вмести, а надо чтобы программа считала только простые а числа не являющиеся простыми просто не замечала (простые числа - те числа которые делятся на 1 и сами на себя, например 1, 3, 5, 7, 13 и т.д.)
Код:
<html>
<head>
<script type="text/JavaScript">
  
function Cymma(obj)
{
var MyArr;
MyArr=new Array(10);
MyArr[0]=parseFloat(obj.num1.value);
MyArr[1]=parseFloat(obj.num2.value);
MyArr[2]=parseFloat(obj.num3.value);
MyArr[3]=parseFloat(obj.num4.value);
MyArr[4]=parseFloat(obj.num5.value);
MyArr[5]=parseFloat(obj.num6.value);
MyArr[6]=parseFloat(obj.num7.value);
MyArr[7]=parseFloat(obj.num8.value);
MyArr[8]=parseFloat(obj.num9.value);
MyArr[9]=parseFloat(obj.num10.value);
var res=(MyArr[0]+MyArr[1]+MyArr[2]+MyArr[3]+MyArr[4]+MyArr[5]+MyArr[6]+MyArr[7]+MyArr[8]+MyArr[9]);
return res;
}

</script>
</head>
<body>
<form name="form1">
Введите первое число: <input type="text" name="num1"><br>
Введите второе число: <input type="text" name="num2"><br>
Введите третье число: <input type="text" name="num3"><br>
Введите четвертое число: <input type="text" name="num4"><br>
Введите пятое число: <input type="text" name="num5"><br>
Введите шестое число: <input type="text" name="num6"><br>
Введите седьмое число: <input type="text" name="num7"><br>
Введите восьмое число: <input type="text" name="num8"><br>
Введите девятое число: <input type="text" name="num9"><br>
Введите десятое число: <input type="text" name="num10" onChange="form1.rez.value=Cymma(document.form1)"><br>
Результат: <input type="text" name="rez">
</form>
</body>
</html>
 
Старый 27.10.2010, 20:51
Ссылки
Старый 28.10.2010, 11:04   #2
В JS вставить функцию:

Код:
function SimpleNum(x)
{
  if (x == 1)
  {
    return 0;
  }
  else
  {
    for(i = 2; i < x; i = i + 1)
    {
      a = x%i;
      if(a == 0)
      {
        return 0;
        break;
      }
    }
    if (x == 0)
    {
      return 0;
    }
    else
    {
      return x;
    }
  }
}
Результат так считать:

Код:
var res=(SimpleNum(MyArr[0])+SimpleNum(MyArr[1])+SimpleNum(MyArr[2])+SimpleNum(MyArr[3])+SimpleNum(MyArr[4])+SimpleNum(MyArr[5])+SimpleNum(MyArr[6])+SimpleNum(MyArr[7])+SimpleNum(MyArr[8])+SimpleNum(MyArr[9]));
Добавлено через 8 минут

лучше так:

Код:
function SimpleNum(x)
{
  if ((x == 1) || (x == 0))
  {
    return 0;
  }
  else
  {
    for(i = 2; i < x; i = i + 1)
    {
      a = x%i;
      if(a == 0)
      {
        return 0;
      }
    }
    return x;
  }
}

Последний раз редактировалось Макс-Текс; 28.10.2010 в 11:04.. Причина: Добавлено сообщение
 
Старый 28.10.2010, 16:41   #3
Программа работает почти правильно, единственное что не правильно она не считает 1 как простое число, хотя 1 является простым числом
Цитата:
Сообщение от Макс-Текс Посмотреть сообщение
В JS вставить функцию:

Код:
function SimpleNum(x)
{
  if (x == 1)
  {
    return 0;
  }
  else
  {
    for(i = 2; i < x; i = i + 1)
    {
      a = x%i;
      if(a == 0)
      {
        return 0;
        break;
      }
    }
    if (x == 0)
    {
      return 0;
    }
    else
    {
      return x;
    }
  }
}
Результат так считать:

Код:
var res=(SimpleNum(MyArr[0])+SimpleNum(MyArr[1])+SimpleNum(MyArr[2])+SimpleNum(MyArr[3])+SimpleNum(MyArr[4])+SimpleNum(MyArr[5])+SimpleNum(MyArr[6])+SimpleNum(MyArr[7])+SimpleNum(MyArr[8])+SimpleNum(MyArr[9]));
Добавлено через 8 минут

лучше так:

Код:
function SimpleNum(x)
{
  if ((x == 1) || (x == 0))
  {
    return 0;
  }
  else
  {
    for(i = 2; i < x; i = i + 1)
    {
      a = x%i;
      if(a == 0)
      {
        return 0;
      }
    }
    return x;
  }
}
Добавлено через 32 минуты

Макс вы исправили, уже работает стабильнее, но все равно не полностью корректно, единственное что не правильно она не считает 1 как простое число, хотя 1 является простым числом, и она так же прибавляет не целые и отрицательные числа хотя они являются вещественными и не должны суммироваться

Последний раз редактировалось denicko; 28.10.2010 в 16:41.. Причина: Добавлено сообщение
 
Старый 28.10.2010, 17:20   #4

1 - не является простым числом.
http://ru.wikipedia.org/wiki/%D0%9F%...81%D0%BB%D0%B0

Добавлено через 2 минуты

Обработку дробных и отрицательных чисел сами сделайте.

Последний раз редактировалось Макс-Текс; 28.10.2010 в 17:20.. Причина: Добавлено сообщение
 
Старый 28.10.2010, 21:19   #5
Ускорьте выполнение скрипта в 2 раза
В цикле:
for(i = 2; i < x; i = i + 1)
считайте до i < x/2, а не до х. для i >= x/2 по-любому не будет делиться
 
Старый 28.10.2010, 21:19
Закрытая тема




Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как ограничить сумму красок в фотошопе? DeCa Растровая графика 1 20.04.2011 20:12
Серверы от $50 (Франция) от простых до навороченных iph Платный хостинг 0 08.02.2011 01:24
Определить сумму первых n элементов последовательности denicko HTML, CSS, JavaScript 2 28.10.2010 11:50
Как вычислить кол-во созданных сессий в php battrack ASP, Perl, PHP и MySQL 1 25.08.2010 18:46
Вычислить процент SooN ASP, Perl, PHP и MySQL 6 22.11.2006 14:04


Текущее время: 01:47. Часовой пояс GMT +4.

Реклама на форуме Условия размещения рекламы
Биржа ссылок Заработай на сайте!
Дизайнерский форум