Size: a a a

2020 July 19

D

Danya in supapro.cxx
osm1um
Ребята, я тут пытался найти ответ на данный вопрос, но толи я не знаю как его сформулировать, толи он слишком очевиден.

Вопрос отчасти не относится к C++:

У меня есть программа написанная на языке C++, пусть это будет стандартный "Hello World". Я собрал её с помощью MSVC в системе на базе процессора Intel. Почему исполняемый файл на выходе работает у моего друга в системе на базе процессора AMD?

Насколько я понимаю у разных процессоров разные op'коды представляют конкретные ассемблерные инструкции, да инструкции врятли у всех одинаковые.

Кроче мой стиль, максимум тупых вопросов. Буду благодарен за ссылки на материал по данной теме.
Было бы грустно перекомпилировать под процессоры отдельной компании софт
Кажется, когда начиналась мода 64-битных архитектур, Интел пыталась продвинуть свою архитектуру IA64, но она не имела обратной совместимости с x86-32, и не прижилась, потому что ещё к тому AMD выпустила AMD64, которая сейчас известна как x86-64
источник

o

osm1um in supapro.cxx
Danya
Было бы грустно перекомпилировать под процессоры отдельной компании софт
Кажется, когда начиналась мода 64-битных архитектур, Интел пыталась продвинуть свою архитектуру IA64, но она не имела обратной совместимости с x86-32, и не прижилась, потому что ещё к тому AMD выпустила AMD64, которая сейчас известна как x86-64
Надо перечитать Танненбаума (нормально в этот раз)
источник

W

Wild_Wind in supapro.cxx
osm1um
Ребята, я тут пытался найти ответ на данный вопрос, но толи я не знаю как его сформулировать, толи он слишком очевиден.

Вопрос отчасти не относится к C++:

У меня есть программа написанная на языке C++, пусть это будет стандартный "Hello World". Я собрал её с помощью MSVC в системе на базе процессора Intel. Почему исполняемый файл на выходе работает у моего друга в системе на базе процессора AMD?

Насколько я понимаю у разных процессоров разные op'коды представляют конкретные ассемблерные инструкции, да инструкции врятли у всех одинаковые.

Кроче мой стиль, максимум тупых вопросов. Буду благодарен за ссылки на материал по данной теме.
Потому, что оба процессора принадлежат к семейству архитектуры x86. Конкретнее - к x86-64, 64-битному расширению x86.
Используя флаги компилятора можно задать под какую архитектуру процессора компилировать.
К примеру, компилятор под x86_64, (т.е. обычный компилятор, не кросскомпилятор), по умолчанию генерирует под x86-64.

У gcc и clang, выбор бекенда компилятора (который пишется для генерации машинных кодов под конкретную платформу), осуществляется посредством флага "-march=${ARCH}", где ARCH - целевая архитектура.
"-march=x86-64"
Так же существует сокращеный вариант. Через "-m$ARCH". "-m32" "-m64".
Но рекомендуется использовать полную версию - march.
источник

Q

Quixiote in supapro.cxx
Ребята, мне надо найти разложения на простые множители всех чисел до n=10^5, желательно побыстрее. Вопрос:
1) Правильно ли я понимаю, что  лучше делать по типу решета эратосфена: идти по массиву чисел с простым шагом р и делить каждое по максимуму на это р?
2) Как лучше хранить найденные факторизации? Я собираюсь в виде массива длиной n из структур вида
struct prime_factors {
 int primes[8];
 int exp[8];
}
;
Это нормально? Или лучше как-то по другому?
источник

Q

Quixiote in supapro.cxx
primes - сами простые в разложении, exp - их степени.
источник

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄... in supapro.cxx
Quixiote
Ребята, мне надо найти разложения на простые множители всех чисел до n=10^5, желательно побыстрее. Вопрос:
1) Правильно ли я понимаю, что  лучше делать по типу решета эратосфена: идти по массиву чисел с простым шагом р и делить каждое по максимуму на это р?
2) Как лучше хранить найденные факторизации? Я собираюсь в виде массива длиной n из структур вида
struct prime_factors {
 int primes[8];
 int exp[8];
}
;
Это нормально? Или лучше как-то по другому?
Решето нужно не для факторизации
источник

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄... in supapro.cxx
Разложить за корень вроде спокойно можно
источник

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄... in supapro.cxx
Quixiote
primes - сами простые в разложении, exp - их степени.
А в вектор просто записывать никак?
источник

Q

Quixiote in supapro.cxx
🎄🎊 R 🎅 Tb| ✡️ 🎊🎄
Разложить за корень вроде спокойно можно
да, но это придется делать 10^5 раз. Неужели это будет быстрее?
источник

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄... in supapro.cxx
Quixiote
да, но это придется делать 10^5 раз. Неужели это будет быстрее?
10^2 раз
источник

Q

Quixiote in supapro.cxx
почему? У нас 10^5 чисел. Для каждого надо найти полную факторизацию
источник

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄... in supapro.cxx
Quixiote
почему? У нас 10^5 чисел. Для каждого надо найти полную факторизацию
Аа
источник

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄... in supapro.cxx
Ну тогда решето
источник

Q

Quixiote in supapro.cxx
Или может динамикой как-то
источник

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄... in supapro.cxx
🎄🎊 R 🎅 Tb| ✡️ 🎊🎄
Ну тогда решето
И просто для каждого числа хранить вектор делителей
источник

D

Danya in supapro.cxx
Quixiote
Ребята, мне надо найти разложения на простые множители всех чисел до n=10^5, желательно побыстрее. Вопрос:
1) Правильно ли я понимаю, что  лучше делать по типу решета эратосфена: идти по массиву чисел с простым шагом р и делить каждое по максимуму на это р?
2) Как лучше хранить найденные факторизации? Я собираюсь в виде массива длиной n из структур вида
struct prime_factors {
 int primes[8];
 int exp[8];
}
;
Это нормально? Или лучше как-то по другому?
@proalgorithms кажется это сюда
источник

AF

Aidar Fattakhov in supapro.cxx
Quixiote
Ребята, мне надо найти разложения на простые множители всех чисел до n=10^5, желательно побыстрее. Вопрос:
1) Правильно ли я понимаю, что  лучше делать по типу решета эратосфена: идти по массиву чисел с простым шагом р и делить каждое по максимуму на это р?
2) Как лучше хранить найденные факторизации? Я собираюсь в виде массива длиной n из структур вида
struct prime_factors {
 int primes[8];
 int exp[8];
}
;
Это нормально? Или лучше как-то по другому?
Кажется да
источник

AF

Aidar Fattakhov in supapro.cxx
Можно ничего не делить кончноже это просто динамика
источник

Q

Quixiote in supapro.cxx
🎄🎊 R 🎅 Tb| ✡️ 🎊🎄
И просто для каждого числа хранить вектор делителей
вектор будет быстрее массива?
источник

AF

Aidar Fattakhov in supapro.cxx
Quixiote
вектор будет быстрее массива?
Нет потомучто он короткий он будет дольше
источник