|
Помогите с алгоритмом!, проверка элементов массива на кратность 2^k |
|
|
|
May 27 2009, 13:30
|
Группа: Новичок
Сообщений: 10
Регистрация: 27-05-09
Пользователь №: 49 629

|
Помогите с алгоритмом, пожалуйста! Нужно организовать проверку элементов массива на кратность 2^k, где k=1...4 unsure.gif
Делаю на ассемблере
Сообщение отредактировал Gabe - May 27 2009, 13:31
|
|
|
|
|
 |
Ответов
|
May 28 2009, 03:57
|
Группа: Новичок
Сообщений: 10
Регистрация: 27-05-09
Пользователь №: 49 629

|
С элементами, кратными 2,4,8 понятно. Как найти числа, кратные 3 и 7? не могу найти соответствующие признаки...
|
|
|
|
|
May 28 2009, 10:22
|
Знающий
   
Группа: Свой
Сообщений: 812
Регистрация: 22-01-05
Из: SPb
Пользователь №: 2 119

|
Цитата(Gabe @ May 28 2009, 07:57)  С элементами, кратными 2,4,8 понятно. Как найти числа, кратные 3 и 7? не могу найти соответствующие признаки... А чего там находить? Просто немного подумать... Ну вот, например, в детстве когда-то писал функцию для получения остатка от деления на 3. int Rest_3(int k) {k=(k&63)+(k>>6); k=(k&15)+(k>>4); k=(k&3)+(k>>2); k=(k&3)+(k>>2); k=(k&3)+(k>>2); if(k==3)return(0); else return(k); } Это работало вроде бы для 13-битового слова. А если для произвольной разрядности числа, то, видимо, можно так записать тело функции, хоть это будет и не оптимально по числу операций: while (k>3) k=(k&3)+(k>>2); if(k==3)return(0); else return(k); Для остатка от деления на 7 тоже легко. Если, конечно, подумать. Сами догадаетесь?
|
|
|
|
|
May 29 2009, 05:23
|

Гуру
     
Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954

|
Цитата(SKov @ May 28 2009, 13:22)  А чего там находить? Просто немного подумать... Забавно получается. Можно обобщить... Проверка делимости (получение остатка от деления) числа К на M= 2^N - 1 Код while (K > M) K= (K & M) + (K >> N); if(K == M) return 0; else return K; P.S. Можно и дальше обобщить, но, наверное будет не так забавно Проверка делимости (получение остатка от деления) числа К на M= 2^N - L Код while (K > M) K= (K & M) + L * (K >> N); if(K == M) return 0; else return K; P.P.S. Ай-ай! Соврал! Код while (K > M) K= (K & ((1 << N) - 1)) + L * (K >> N); if(K == M) return 0; else return K;
|
|
|
|
Сообщений в этой теме
Gabe Помогите с алгоритмом! May 27 2009, 13:30 Сергей Борщ Цитата(Gabe @ May 27 2009, 16:30) Нужно о... May 27 2009, 13:43 Gabe Огромное спасибо!!!
Осталось только в ... May 27 2009, 13:47 Gabe ЦитатаDO 8, endfor
MOVE (A0)+, R2 /* загру... May 27 2009, 16:08 Rst7 Молодой человек, зачем Вы вообще в ассемблер сунул... May 27 2009, 16:27 Gabe мне необходимо её написать на ассемблере, так как ... May 27 2009, 16:32 Rst7 Цитатамне необходимо её написать на ассемблере, та... May 27 2009, 16:42 Gabe не ругайтесь, пожалуйста, я только начинающий, поэ... May 27 2009, 17:40   SKov Цитата(Палыч @ May 29 2009, 09:23) P.S. М... May 29 2009, 08:27    Палыч Цитата(SKov @ May 29 2009, 11:27) Да, обы... May 29 2009, 09:54 Rst7 Проще всего будет банально разделить и проверить о... May 28 2009, 04:01 Gabe Банально разделить можно только в RISC-ядре, там е... May 28 2009, 04:20 Палыч Цитата(Gabe @ May 28 2009, 07:20) Подсказ... May 28 2009, 05:09 Палыч Цитата(Gabe @ May 28 2009, 07:20) Подсказ... May 28 2009, 05:14 Rst7 Напишите деление в столбик самостоятельно. Тем бол... May 28 2009, 05:13 Gabe Rst7, новых итераций не будет
Палыч, спасибо, буде... May 28 2009, 09:48 Gabe кажется, для 7 будет:
while (k>7) k=(k&7)+(... May 28 2009, 16:31 SKov Цитата(Gabe @ May 28 2009, 20:31) кажется... May 28 2009, 16:55 Rst7 Вспомнил - http://graphics.stanford.edu/~seander/b... May 29 2009, 09:07 SKov Цитата(Rst7 @ May 29 2009, 13:07) Вспомни... May 29 2009, 09:29 Rst7 ЦитатаДа, но вычислителя остатка при делении на 5 ... May 29 2009, 09:34 SKov Цитата(Rst7 @ May 29 2009, 13:34) Вот чер... May 29 2009, 12:51  Палыч Цитата(SKov @ May 29 2009, 15:51) Правда,... May 29 2009, 14:06   SKov Цитата(Палыч @ May 29 2009, 18:06) Смысл ... May 29 2009, 14:26    Палыч Цитата(SKov @ May 29 2009, 17:26) Ну вы т... May 29 2009, 14:43     SKov Цитата(Палыч @ May 29 2009, 18:43) Ну, то... May 29 2009, 14:51      Палыч Цитата(SKov @ May 29 2009, 17:51) Ну, ост... May 29 2009, 15:00       SKov Цитата(Палыч @ May 29 2009, 19:00) Соглас... May 29 2009, 15:37        Палыч Цитата(SKov @ May 29 2009, 18:37) А приче... May 29 2009, 15:59         SKov Цитата(Палыч @ May 29 2009, 19:59) Просто... May 29 2009, 16:49          singlskv Цитата(SKov @ May 29 2009, 20:49) Теперь ... May 29 2009, 18:20
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|