Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск делителей 
:(
    Опции темы
Aliance
Дата 27.1.2005, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Можно ли с помощью JS найти делители целые числа?

И можно ли найти десятые, сотые и т.д. числа, без исп. метода slice() и т.п.
Т.е. 678 = 6 сотых + 7 десятых + 8 целых, т.е. имея числа xyz, узнать целочисленные параметры x, y и z?
PM MAIL WWW ICQ Skype   Вверх
Се ля ви
Дата 27.1.2005, 00:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java/SOAрхитектор
****


Профиль
Группа: Модератор
Сообщений: 2016
Регистрация: 5.6.2004
Где: place without tim e and space

Репутация: 5
Всего: 127



Ну да - конвертишь в строку и разбираешь посимвольно. Примерно так:
Код

var x = new String(687);
alert('сотые - ' + x.charAt(0) + ', десятые - ' + x.charAt(1) + ', единицы - ' + x.charAt(2));



--------------------
  )
 (
[_])
проф. блог

Кролики думали, что занимаются любовью, а на самом деле их просто разводили...
PM MAIL WWW Skype GTalk   Вверх
Aliance
Дата 27.1.2005, 00:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Се ля ви
Ха, а если мы не знаем переменную x ?! Если пользователь вводит ее с клавиатуры?
PM MAIL WWW ICQ Skype   Вверх
Gregof
Дата 27.1.2005, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 3.6.2004

Репутация: 1
Всего: 12



Может так?
Код

var strWithNum='123';
var res=new Array,a=new Array("1","10","100","1000");
for(var i=strWithNum.length;i>0;i--)
   res[strWithNum.length-i]=a[i-1]+' - '+strWithNum.charAt(i-1);
res=res.join(',');


А почему нельзя найти делители?
Алгоритм их поиска весьма несложен, проблем с реализацией его на JS я тоже не вижу.
--------------------
Может поздно, может рано, нет у времени стоп-крана... (Чайф)
PM MAIL ICQ   Вверх
Aliance
Дата 27.1.2005, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Gregof
Ты проверял эту функцию для 12813432758974258926754892 ?


Цитата(Gregof @ 27.1.2005, 09:45)
Алгоритм их поиска весьма несложен, проблем с реализацией его на JS я тоже не вижу.

Помоги, напиши.
PM MAIL WWW ICQ Skype   Вверх
Sardar
Дата 27.1.2005, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Aliance что то я смысл задачи не догоняю... Тебе просто нужно разобрать десятичны числа посимвольно? Приведи к строке и бери как показали выше...


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Aliance
Дата 27.1.2005, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Sardar
Как показал Се ля ви это верно, но мне не подходит, т.к. мне нужно это к любому числу от 0 до бесконечности (мы не знаем число)
PM MAIL WWW ICQ Skype   Вверх
Sardar
Дата 27.1.2005, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Дык задача детская smile Бесконечные числа ты по любому обрабатывать не сможешь, у тебя конечное множество слов, да и числа не бесконечные. Или я не понял задачи:
Код
chisla.names=[
 {name:"еденицы: ",delim:1},
 {name:"десятки: ",delim:10},
 {name:"сотни", delim:100},
 {name:"тысячи",delim:1000},
 {name:"миллионы",delim:1000000}
];
function chisla(chislo) {
 var i, num = Math.abs(chislo), ret=[];
 for(i=chisla.names.length-1; i>=0 && chisla.names[i].delim>num; i--);
 for(; i>=0; i--) {
   ret.push(chisla.names[i].name.concat(Math.floor(num/chisla.names[i].delim)));
num=num%chisla.names[i].delim;
 }
return ret;
}

alert(chisla(12305));



--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Aliance
Дата 28.1.2005, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Sardar
Ааа, нееет =) Не детская...
Не бесконечны, ну это есесно smile
Но в твоем коде число 10 миллионов не подойдет, верно?
Я хочу так:
Код

var chislo = promt("Введите любое целое натуральное число");
...

Как мне от сюда узнать все необходимое ? :-/
PM MAIL WWW ICQ Skype   Вверх
Sardar
Дата 28.1.2005, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата(Aliance @ 27.1.2005, 23:23)
Но в твоем коде число 10 миллионов не подойдет, верно?

А ты попробуй smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
sergejzr
Дата 28.1.2005, 01:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 10
Всего: 360



Так ведь тот же псевдокод (не пробовал, но должен идти)...
Код

var chislo = promt("Введите любое целое натуральное число");
for(var i=chislo.length-1;i>0;i--)
{
document.write(Math.pow(10,i)+(i<3?"-и":"-ы")+chislo.charAt(i)+"<br>");
}
document.write("1-ы"+chislo.charAt(0)+"<br>");




--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Gregof
Дата 28.1.2005, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 3.6.2004

Репутация: 1
Всего: 12



Цитата(Aliance @ 27.1.2005, 16:46)
Цитата (Gregof @ 27.1.2005, 09:45)
Алгоритм их поиска весьма несложен, проблем с реализацией его на JS я тоже не вижу.
Помоги, напиши.

Читай тут http://algolist.manual.ru/maths/teornum/factor/
Но опять же все они для конечных чисел. Если делать вриант для бесконечных чисел, то придётся реализовывать длинную арифметику, что само собо несложно. Просто алгоритм поиска делителей с использованием длинной арифметики будет иметь огромнейшую вычислительную сложность.

--------------------
Может поздно, может рано, нет у времени стоп-крана... (Чайф)
PM MAIL ICQ   Вверх
Alx
Дата 28.1.2005, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: 10
Всего: 78



я чё-то не въеду, а почему нельзя посчитать длину строки-1 - получим что за самое высокое число, например для 1 млн - это будет 6... в общем щас попробую


--------------------
PM MAIL WWW ICQ   Вверх
Alx
Дата 28.1.2005, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: 10
Всего: 78



вот, надеюсь это тебе подойдёт))

http://portfolio.alx.com.ru/scripts/javascript/delitel.html

Код

<script language="JavaScript">
<!--//
function delitel(inp)
{var out = "";
var realn = inp.length - 1;
var zeros = "";
for (var i=0;i<inp.length;i++)
{zeros = "";
for (var k=0;k<realn;k++)
{zeros += "0";
}
out += " + " + inp.charAt(i) + zeros;
realn--;
}
var re = new RegExp(" \\+ ");
out = out.replace(re, " ");
return out;
}

var p1 = prompt("Введите целое число:","");
document.write(delitel(p1));
//-->
</script>


Это сообщение отредактировал(а) Alx - 28.1.2005, 17:03


--------------------
PM MAIL WWW ICQ   Вверх
Aliance
Дата 28.1.2005, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Alx
Спасибо, это работает :-)
PM MAIL WWW ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0675 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.