Сокращение большого числа до элементарного

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Diamock
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 388
Зарегистрирован: 26.10.2009 (Пн) 4:19
Откуда: Кемерово

Сокращение большого числа до элементарного

Сообщение Diamock » 26.02.2011 (Сб) 19:48

Здравствуйте Уважаемые!
Имеем число большее 9, например 25, надо упростить его по теории Пифагора 2+5=7.
В принципе, я это реализовал, но этот "код", мне стыдно показывать (там сплошные преобразования из Integer в String и наоборот).
Может быть, кто-то занимался реализацией этого алгоритма?
С уважением...
In der Beschrankung zeigt sich erst der Meister
Графоманю...

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Сокращение большого числа до элементарного

Сообщение Хакер » 26.02.2011 (Сб) 19:58

Не понял.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Diamock
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 388
Зарегистрирован: 26.10.2009 (Пн) 4:19
Откуда: Кемерово

Re: Сокращение большого числа до элементарного

Сообщение Diamock » 26.02.2011 (Сб) 20:08

Извиняюсь за не внятное объяснение, добавляю проект.
Вложения
Звездный код имени.zip
(9.35 Кб) Скачиваний: 57
Последний раз редактировалось Diamock 27.02.2011 (Вс) 5:05, всего редактировалось 1 раз.
In der Beschrankung zeigt sich erst der Meister
Графоманю...

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Сокращение большого числа до элементарного

Сообщение iGrok » 26.02.2011 (Сб) 20:20

Эээ.. А что там сложного?
Три минуты на коленке - вот и весь "алгоритм".

Как-то так:
Код: Выделить всё
Function numsum(num As Long) As Long
Dim sum As Long
 
  Do
    sum = 0
    Do
      sum = sum + (num Mod 10)
      num = num \ 10
    Loop While num > 0
    num = sum
  Loop While sum > 9
 
  numsum = sum
End Function
label:
cli
jmp label

Diamock
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 388
Зарегистрирован: 26.10.2009 (Пн) 4:19
Откуда: Кемерово

Re: Сокращение большого числа до элементарного

Сообщение Diamock » 27.02.2011 (Вс) 5:12

iGrok, спасибо за помощь!
In der Beschrankung zeigt sich erst der Meister
Графоманю...

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Re: Сокращение большого числа до элементарного

Сообщение Twister » 28.02.2011 (Пн) 10:43

Три минуты на коленке - вот и весь "алгоритм".

Хм... "Неважнецкий" алгоритм ;)

Прочитав вот это (раздел цифровые корни) можно вывести вот это (num - "сокращаемое" число):
result := (num - 1) mod 9 + 1;
А я все практикую лечение травами...

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Сокращение большого числа до элементарного

Сообщение iGrok » 28.02.2011 (Пн) 13:20

Twister писал(а):Хм... "Неважнецкий" алгоритм ;)

Не спорю. Но на то он и "три минуты на коленке". :)
Впрочем, ничего лишнего, и в принципе по нему вполне понятно, что происходит.

А "вот это" - уже чёрная магия. Что-то вроде легендарного "Fast Inverse Square Root". =)
Спасибо за ссылку, почитаю.
label:
cli
jmp label

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Re: Сокращение большого числа до элементарного

Сообщение Twister » 28.02.2011 (Пн) 13:59

Спасибо за ссылку, почитаю.
Я в детстве взахлёб читал книги Гарднера и думаю, что если ты этого до сих пор не сделал, то обязательно стоит. Вроде всего лишь "занимательная математика для детей", но вот видишь какие полезные фишки можно почерпнуть оттуда. Главное не считать при этом, что такая литература - для неудачников ;)
А я все практикую лечение травами...

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Сокращение большого числа до элементарного

Сообщение arthur2 » 28.02.2011 (Пн) 14:21

Twister писал(а):Главное не считать при этом, что такая литература - для неудачников
Подписываюсь! И Гарднера в детстве, кстати, тоже обожал - хотя и понимал далеко не всё.
Артур
 
   

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Сокращение большого числа до элементарного

Сообщение alibek » 28.02.2011 (Пн) 15:58

iGrok писал(а):А "вот это" - уже чёрная магия.

Какая еще магия?
Умножение двухзначных чисел на 11 ([A][B]*11=[A][A+B][B]) — это тоже магия?
Lasciate ogni speranza, voi ch'entrate.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Сокращение большого числа до элементарного

Сообщение iGrok » 28.02.2011 (Пн) 22:16

alibek писал(а):Какая еще магия?

И то и другое - это не алгоритм, а формула, основанная на свойствах чисел.
Но вот это - http://en.wikipedia.org/wiki/Fast_inverse_square_root - тоже фактически "формула", основанная на свойствах чисел.

Насколько мне известно, "чёрной магией", применительно к коду, называют основанные на полноценных теоретических выкладках неочевидные решения, приводящие к заданному результату.
label:
cli
jmp label


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Google-бот и гости: 93

    TopList