НавигацияВход для пользователейМетки20 лет
25 лет
9860
add-ins
Atmega16
CAS
Casio
casio 9860
Casio fx-570
Casio fx-9750
CITIZEN
ClassPad 330
COM-порт
FA-124
HP
HP-35S
HP-48
HP-50
HP 15C LE
HP 50g
IDE
iOS
mk.exe
mkl2mkp
SPI
TI
TI-89 Titanium
Unix
Андроид
Анонсы
Дополнительные вопросы по SPI-интерфейсу.
Игры
Импульсная характеристика
История
КЭИ
Комбинаторика
Комплексные числа
Конкурсы
Криптография
Куплю БРП Москва
Лунолёт
Лунолёты
МК-52
МК-161
Математика
Мысли
ПМК
ПО
Поломка
Пробел в знаниях
Программные метки в МК-1хх
Программы
Прогрессия
Простые числа
Разложение
Регламент
Самоделки
Секундомер
Сервис
События
Справочное пособие
Стыковка
Факторизация
Физика
Фото
ЭКВМ
Юмор
ЯВУ
браузер
версия
внешний модуль
гибкий
гипербола
дети
калькулятор
книги
компилятор
кривые второго порядка
матрицы
методичка
мк-61
парабола
подзатыльник
практическое руководство
преобразоване координат
программируемый
прошивка
ротор
рынок
справочник
среда разработки
текст
точность вычислений
тригонометрия
учебник
цветы жизни
цифровая обработка сигналов
читалка
шахматы
эллипс
Новости других сайтов |
Факторизация (разложение на простые множители) тремя способами (CASIO fx-9750G Plus)Эта страница была утеряна месяца два назад в результате аварии на сервере и теперь мною восстановлена повторно. Вариант 1 - Разложение на множители методом перебораСамый простой метод с точки зрения реализации, целесообразно использовать для чисел размера примерно до 1020 Алгоритм имеет экспоненциальную сложность с точки зрения времени счёта. ClrText “INPUT NUMBER” ?->A:sqrA->B For 2->C To B If Frac(A/C)=0 Then A/C->A:C■ C-1->C:sqrA->B IfEnd If I>2 Then I+1->I IfEnd Next A■ “END FACTORISATION” Сокращения: sqr - квадратный корень; / - символ деления, - перевод строки Вариант 2 - Р-1 метод ПоллардаЭтот метод самый быстрый (имеет полиномиальную сложность), но работает только для составных чисел специального вида, так называемых "гладких". По этому методу разложить не удаётся гораздо чаще, чем удаётся. Кроме того, этот метод раскладывает числа на два множителя не зависимо от того из скольки простых чисел состоит составное. ClrText “INPUT NUMBER”?->N Abs ln N->B:2->A:1->I Do I+1->I:A->C 1->J While J < I AC-NInt(AC/N)->N J+1->J WhileEnd C->A:A-1->C N->X:C->Y Prog “SUB NOD” LpWhile(((X=1)Or(X=N))And(I<=B)) N/X->Y “ITER=” Locate 6,3,I Locate 3,4,X Locate 3,5,Y Подпрограмма "SUB NOD" вычисления наибольшего общего делителя по алгоритму Евклида While Y>0 X-YInt(X/Y)->X Y->Z:X->Y:Z->X WhileEnd Return Вариант 3 - Ро метод ПоллардаЭто субэкспоненциальный метод, который требует значительных объёмов памяти, но для больших чисел даёт результат гораздо быстрее, чем переборный метод. ClrText:“RO POLLARD” “INPUT NUMBER”?C 255->Dim List1 2->List1[1] For 1->I To 254 List1[I]->X X2+1->X X->List 1[I+1] For I->J To 1 Step -1 If List1[J]=X Then Break IfEnd Next If J!=1 Then List 1[J-1]->X List 1[J-1]->Y X-Y+C->X X-CInt(X/C)->X C->Y Prog “SUB NOD” C/X->Y Break IfEnd Next If J>1 And I<254 Then “ITER=” “REPT=” “MUL1=” “MUL2=” Locate 6,4,I Locate 6,5,J-1 Locate 6,6,X Locate 6,7,Y Else “=LOW MEMORY=” IfEnd Это, конечно, не все методы, но самые простые для понимания и запоминания.
Спасибо Автор: Serguei_Tarassov
|