|
Текст подпрограммы и версий pa15r_c.zip |
Тексты тестовых примеров tpa15r_c.zip |
Решение уравнения Диофанта.
Подпрограмма pa15r_c вычисляет частное решение уравнения
a x + b y = c
в целых числах, где a, b и c - заданные целые числа, причем значения a и b не равны нулю.
int pa15r_c(integer *a, integer *b, integer *c, integer *q,
integer *x, integer *y, integer *ierr)
Параметры
| a, b, c - | заданные значения коэффициентов исходного уравнения, a ≠ 0, b ≠ 0 (тип: целый); |
| q - | целый одномерный массив, длина которого должна быть в пять раз больше, чем количество цифр в максимальном по модулю из чисел a, b и c; |
| x, y - | целые переменные, значения которых на выходе полагаются равными вычисленному частному решению исходного уравнения; |
| ierr - | целая переменная, значение которой полагается равной признаку выявленной ошибки при счете; при этом: |
| ierr=65 - | когда исходное уравнение не определено; |
| ierr=66 - | когда решения исходного уравнения в целых числах не существует. |
Версии: нет
Вызываемые подпрограммы: нет
Замечания по использованию: нет
int main(void)
{
/* Local variables */
extern int pa15r_c(int *, int *, int *,
int *, int *, int *, int *);
static int ierr, a, b, c__, q[5], x, y;
a = 1;
b = 3;
c__ = 4;
pa15r_c(&a, &b, &c__, q, &x, &y, &ierr);
printf("\n %5i \n", ierr);
printf("\n %5i %5i \n", x, y);
return 0;
} /* main */
Результаты:
ierr = 0
x = 1
y = 1