.\" Copyright 2026 Andrew V.Kosteltsev (kx@radix-linux.su) .\" .\" .TH ilcm 3 "September 14, 2026" "libmpu" "LibMPU Programmer's Manual" .SH NAME \fBilcm\fP \- наименьшее общее кратное беззнаковых целых чисел .SH SYNOPSIS .nf .B #include .PP .BI "void ilcm( mpu_int *" c ", mpu_int *" a ", mpu_int *" b ", int " nb " );" .fi .SH DESCRIPTION Функция \fBilcm()\fP вычисляет наименьшее общее кратное (НОК) беззнаковых целых чисел, расположенных по адресам \fBa\fP и \fBb\fP, и размещает результат по адресу \fBc\fP. Вычисление выполняется по формуле .sp .nf lcm(a, b) = (a / gcd(a, b)) * b .fi .sp что позволяет не формировать произведение \fBa * b\fP до деления на НОД. Содержимое памяти по адресам \fBa\fP и \fBb\fP не изменяется. Параметр \fBnb\fP определяет размер всех операндов в байтах. .PP Принята следующая семантика для нулевых операндов: .nf .sp lcm(0, b) = 0 lcm(a, 0) = 0 lcm(0, 0) = 0 .fi .PP Если математическое значение НОК не помещается в \fBnb\fP байтов, по адресу \fBc\fP сохраняются младшие \fBnb\fP байтов результата и выставляется флаг \fBO\fP (Overflow). Флаг \fBZ\fP указывает на нулевой результат. Флаги \fBP\fP и \fBS\fP выставляются в соответствии с сохранённым результатом там, где они определены; флаг \fBP\fP определён только для операций над одно- и двухбайтовыми целыми числами. .sp .SH EXAMPLES .nf .sp #include #include int main( void ) { mpu_int1024_t c, a, b; int nb = NB_I1024; __mpu_char8_t s[4096]; __mpu_init(); iatoui( a, "12", nb ); iatoui( b, "18", nb ); ilcm( c, a, b, nb ); iuitoa( s, c, RADIX_DEC, LOWERCASE, nb ); printf( "c = %s;\\n", s ); /* c = 36; */ __mpu_free_context(); return( 0 ); } .fi .sp .SH SEE ALSO .BR iadd(3), .BR isub(3), .BR iadc(3), .BR isbb(3), .BR ineg(3), .BR inot(3), .BR iand(3), .BR itest(3), .BR icmp(3), .BR ior(3), .BR ixor(3), .BR iinc(3), .BR idec(3), .BR ixchg(3), .BR icpy(3), .BR icvt(3), .BR imul(3), .BR ismul(3), .BR idiv(3), .BR isdiv(3), .BR iatoi(3), .BR iatoui(3), .BR iitoa(3), .BR iuitoa(3), .BR _int_digs(3), .BR ibits_len(3), .BR igcd(3), .BR imod(3), .BR imul_mod(3), .BR ipow_mod(3), .BR ipowm1_mod(3), .BR shifts(3), .BR shifts\-n(3), .BR circular\-shifts(3), .BR circular\-shifts\-n(3), .BR integer\-flags(3), .BR real\-flags(3), .BR libmpu(7).