void RED_Q_Q(fraction &RED) { integer NOD; NOD = GCF_NN_N(ABS_Z_N(RED.numenator), RED.denominator); //Ищем НОД числителя и знаменатель RED.numenator = DIV_ZZ_Z(ABS_Z_N(RED.numenator), NOD); //Делим числитель на НОД RED.denominator = DIV_ZZ_Z(RED.denominator, NOD);//Делим знаменатель на НОД }
struct RATIONAL RED_QQ_Q (struct RATIONAL a) { struct RATIONAL b; //Возвращаемая дробь struct NATURAL NOD=GCF_NN_N(a.numerator,a.denominator); //НОД числителя и знаменателя b.numerator=DIV_ZZ_Z(a.numerator,NOD); b.denominator=DIV_ZZ_Z(a.denominator,NOD); b.sign=a.sign; return b; }
/*FAC_P_PQ Описание: Вынесение из многочлена НОК знаменателей коэффициентов и НОД числителей Подключаемые модули: TRANS_N_Z LCM_NN_N GCF_NN_N DIV_ZZ_Z Описание переменных: polinom - исходный многочлен newpolinom - новый многочлен Авторы: Вовк Кирилл Эмомов Голибджон Группа: 4305 */ POLYNOMIAL FAC_P_PQ(POLYNOMIAL polinom) { POLYNOMIAL newpolinom = polinom; NATURAL nok = polinom.factors[0].denominator; NATURAL nod = polinom.factors[0].numerator; for(int i = 1;i < polinom.degree;i++) { nok = LCM_NN_N(nok,polinom.factors[i].denominator); // НОК знаменателей nod = GCF_NN_N(nod,polinom.factors[i].numerator); // НОД числетелей } for(int i = 0;i < polinom.degree;i++) { newpolinom.factors[i].denominator = 1; newpolinom.factors[i].numerator = DIV_ZZ_Z(TRANS_N_Z(nok),polinom.factors[i].denominator) * DIV_ZZ_Z(TRANS_N_Z(polinom.factors[i].numerator,nod); // подсчет коэффициентов нового многочлена } return newpolinom; }