[P&AM Lab] ��������� ������� �����
Grigoriy A. Sitkarev
sitkarev �� komitex.ru
�� ��� 22 00:08:32 MSK 2011
������� ������.
> ����� ������ ���������� ������� �����. ��������� ��������� ��������� �
> ������������ ���� �� ���� ��� ������ ������ �������� � ����� �������
������ �
> ��� ����. ���� ������� ������ ��������, ����������� �ݣ ���������,
���������,
> �������, ������� �� �������.
���������� ��� � ������ ������� API -- �.�. ��������� ������, �����
�������, �� ������� � ���������� � ������������ ��������. ��� ���� �����
API ��� ������� ����� ����� �� ���:
�) ���������;
�) ����������������;
�) ������� ��� �����������;
�) �������������� ������� ���������� � ��������� ������������;
�) ����������� �� ����������� ��������� � ������� (���� �������
��������� � ���������� � ��������).
��������, ������� ����� ����������� ������ -- ����� ����� �����
����������? ��� �� �� �ţ ����� � ��� �� ����� ţ ������������? ���
����� ����� ����������� �� �����-�� ����� � ���������-���������������
������� � ������� ţ, ���� �� ������������. �� ���� ���� �� ������ ޣ���
��������������, ����� ������� �� ����� �������� �� ����������. �� ������
-- ������� ������� ���� �������� � ���� ����������� ��� ���������������.
������ ��������������� API, �.�. ��������� � ���� ��������, �� �����,
������� ���������� ����������, ��������� ���������, ������������ � �.�.
�������� ������� ����������. ��������, � ���� ���������� ���������
������� ��������� ��� ���-�� ����� ��������������� �� ����� �� �����,
����� ������ ����������� �ݣ ���, �� ������. ��������, �����-�� ���
������������. �������� ��������� �������-�� ���, ��� ����������. �� ���
���������� �� ���� ���� -- ��������� � ������������ ����.
> ����� �� ������ ���-�� �ݣ? ���� �� ����� �������
> ������������� �����? ����� �� ������ ������� ���, ��� �� ��� ����� �����
> ���������� ������ �� ������� �����?
����� ������� ��� ����� ������� ����� ����������� (� �ݣ ����� ������):
bnum_new()
bnum_free()
bnum_unset()
bnum_reset()
bnum_add()
bnum_sub()
bnum_mul()
bnum_div()
bnum_mod()
bnum_gcd()
bnum_exp() ��� bnum_pow()
bnum_set()
bnum_set_int()
bnum_set_ascii()
bnum_get_ascii()
���-�� �����... ���� �������� �ݣ �������. ��� ����� ������ ���.
���� ��������, � ���� ��� ������������� ����� a � b, � ��� ���� a < b, �
����� ������� �� (a - b), �� ����������� ����� ������������� �����. ���
����� �� ������ �� ������������� ������. ����� ���������� ����� ������.
��� �������� ����� ���� ���������� ������ ����.
���� ��� ����� ������ ����� ����� ������� 65536 � ����� ��������
�������� ������� � unsigned short. ����� bignum ����� ���� �������
�������, ������� ���������� � ������ ������ �������� ����� � �������
������� �������. ������� ����� ������� ���� ��� ���� ������ �������
���������� ���������������. ������ ������� ������ ��� � ����� ������ ��
�� ����� �������� � ���������� �������� ���� � �����. ��������,
65535^0=1 ���� top ����� 0.
#define BNUM_BASE 65536
struct bignum {
int sign; /* 1 = negative, 0 = positive */
int nalloc; /* allocated */
int top; /* last used */
unsigned short *val; /* BNUM_BASE digits */
};
���-�� ����� ������.
��������� ������ ������������ �� ��������� � �� �� ��������. ������ ���
� ���� ���������� � ����. ������ ���� ���-�� �����:
/* res = a + b */
int bnum_add(struct bignum *res, struct bignum *a, struct bignum *b);
����, ������ �������� ���������� �� �����. � ���� � ���� ���� ��������.
����� ���� � ���� �����-�� �������� ������������, �� ���� ����
����������� ������ ������?
--
�.�.
��������� ���������� � ������ �������� Lab