Прямой эфир

  • avatar
  • vladoos
  • 03 января 2011, 00:16
  • #
  • 0
Было бы намного интереснее перевести алгоритм в двоичную алгебру. Тогда можно максимально оптимизировать все операции. Современные процессоры имеют расширенные математические команды, которые можно было бы использовать в обход универсальных компиляторов. Я когда давно делал нечто подобное для системы команд x86. Но реализовать подобное на системе команд intel64 было бы намного интереснее.
Да, именно так.

Запись единицы в i-й бит массива a, состоящего из 32-битных чисел:
a[i >> 5] ||= (1 << (i & 31));

Чтение не сложнее. Кстати, можно за раз проверять 32 числа на простоту, сравнивая соответствующую ячейку массива a с 0xffffffff.
  • avatar
  • LiS-31
  • 02 января 2011, 23:52
  • #
  • +1
в смысле считать 1 в бите показателем простого числа, а 0 нет, а потом по номеру бита в массиве определять число?
Честно говоря, с битовыми массивами не работал и насколько сложно реализовать это будет не представляю, но идея передачи этой решетки в виде картинки (bitmap) достаточно интересна))
  • avatar
  • vladoos
  • 02 января 2011, 23:45
  • #
  • 0
Ну это же не ява. Я как раз и говорил о том, что бы написать код под конкретный процессор дабы добиться максимально возможной производительности. Алгоритм простой можно и под разные системы команд переписать, не убудет.
Для решета можно использовать битовый массив. Работать будет медленнее, но не знаю, насколько медленнее.

1. В решете делается упор на большое количество простых операций (сложений),
2. Во втором способе упор на небольшое количество медленных операций (деление с остатком).
  • avatar
  • LiS-31
  • 02 января 2011, 23:36
  • #
  • +1
Насколько я понимаю суть этих методов одинакова, только подход с разных сторон. И поэтому получается что решето Эратосфена должно потреблять гораздо больше памяти т.к. требует предварительного массива всех чисел меньше максимального искомого.
Т.е. для того что бы найти все простые числа до 1 000 000 нам необходим массив из 999 999 чисел от 2 до 1 000 000, а в случае делимости чисел массив будет состоять только из простых чисел
Или есть какая-то реализация решета не пожирающая память?
  • avatar
  • LiS-31
  • 02 января 2011, 23:31
  • #
  • +1
Ну к примеру завести список, в который записывать все найденные простые числа. А условие цикла заменить на:
for (int i=2; i<List.Length; i++)
  {
    if (number%List[i] == 0)
    {
{
      return 0;
    }

    if ((i==number) || (i>sqrt(number)))
    {
      return 1;
    }
  }

Синтаксис правда больше на C# похож, но суть вроде передает. List это список, и осталось только вставить добавление очередного простого числа. Это уже по вкусу или перед return или уже при использовании функций
  • avatar
  • count0
  • 02 января 2011, 23:25
  • #
  • +2
Звоним из скайпа в SIPNET и обратно:
www.sipnet.ru/call/skype.html

Для звонков с оборудования (SIP-телефоны, шлюзы, ip-АТС) можно заносить учетки user@skype.sipnet.ru в записную книжку / номерной план устройства и звонить по короткому «внутреннему» номеру :-)
  • avatar
  • count0
  • 02 января 2011, 22:01
  • #
  • 0
Скажите кто-нибудь разработчикам проекта — на офсайте прямо сразу есть скриншоты, которые содержат ненормативную лексику в главном чате. Это может негативно сказаться на имидже продукта (в частности, если я дам ссылку своему директору, а он нажмет не туда...).
  • avatar
  • count0
  • 02 января 2011, 21:52
  • #
  • +1
Рано.
Прочтение данного топика многое прояснило, но претензии к с виду неприступной (попробуйте скачать демку сетевой версии, слова которые при этом возникнут — пишите сюда ;-), но в душе белой и пушистой компании остались.

В частности — школьный вайн на фтп (который ещё надо было найти, на офсайте нет ни слова) не обновлялся с 2008-го(!) года. За это время было сделано очень много улучшений как в обычный, так и в этерсофтовский вайн. Т.е. мы можем считать, что поддержка школ — отсутствует. Даже сейчас новой версии нет, несмотря на новость. В поддержке сообщили, что обновление будет. Когда, и до какой версии — неизвестно.
Поддержка юридического ПО, в частности системы Гарант, необходимой для работы бухгалтериям и дирекциям образовательных учреждений в нем не предусмотрена. Разработчики системы также не спешат делать клиента под Linux. Таким образом, преимущество получают Консультант+ и Windows (для тех, кто не планирует отказываться от системы Гарант). Причем, в масштабах всей страны (сейчас рынок справочно-правовых систем поделен примерно поровну, малую часть занимает Кодекс).
Этим ходом компания Этерсофт вынуждает лояльных пользователей СПС Гарант приобретать платную версию своего ПО, которая сравнима со стоимостью Windows, и под которую отсутствуют бюджетные деньги в школах, способствует становлению монополии СПС Консультант.
По моему опыту, есть 2 практически одинаковых по скорости способа нахождения первых нескольких миллионов простых чисел:
1. решето Эратосфена,
2. проверка делимости нечетных чисел на уже найденные простые числа (величиной до квадратного корня из тестируемого числа).
  • avatar
  • eReS
  • 02 января 2011, 20:43
  • #
  • 0
Знаю это свойство :)
Ну пока незнаю как реализовать кратко и ясно. В будущем, надеюсь, исправлю это
  • avatar
  • LiS-31
  • 02 января 2011, 20:12
  • #
  • +1
Впринципе можно еще вести список простых чисел и делимость проверять по ним. Так как если число не делится ни на одно простое число, то оно так же является простым.
Это особенно ускорит алгоритм при больших числах т.к. будут пропускаться все большие массивы чисел
  • avatar
  • sterh
  • 02 января 2011, 19:53
  • #
  • +3
Спасибо, полезное дело делаете.
  • avatar
  • eReS
  • 02 января 2011, 19:43
  • #
  • +5
За производительность напишу в завтрашней статьи :)
  • avatar
  • fog
  • 02 января 2011, 18:38
  • #
  • +2
а если в машинные коды переписать алгоритм? )
Поломается переносимость и кроссплатформенность кода.
  • avatar
  • fog
  • 02 января 2011, 18:32
  • #
  • 0
а что же тогда работает и с чем же в любой момент не может что угодно случиться?
У меня два jid на разных серверах — один из них работает в любой момент. ;-)
  • avatar
  • fog
  • 02 января 2011, 18:30
  • #
  • 0
столкнулись с проблемой не совместимости клиентов
Я согласен, есть такая проблема, но она не относится к разряду непреодолимых. Нужно писать в багзилу разработчикам, просить на форумах соответствующих проектов и в рассылках. Может быть даже, дать донейшен с комментарием, что хотелось бы реализации таких и таких функций. Как только девелоперы поймут, что отсутствие нормальной поддержки VoIP сдерживает рост популярности их ПО, я думаю, что проблема решится, технических препятствий для этого нет.
  • avatar
  • vladoos
  • 02 января 2011, 18:20
  • #
  • 0
а если в машинные коды переписать алгоритм? ) И было бы интересно измерить, насколько увеличится производительность.
  • avatar
  • NOX
  • 02 января 2011, 16:15
  • #
  • +2
Предложите альтернативу со столь же развитой инфраструктурой, супортом и аксесорией. Или хотя бы предложите Jabber-клиент + SkypeKit.