МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Московский государственный институт электроники и математики (технический университет)
Кафедра «Вычислительная техника»
ОТЧЕТ
о лабораторной работе №2
Вариант: 22
Исполнитель:
студент группы С-31
Москва – 2009г.
I. Разработать программу, которая находит все рациональные корни полинома n-й степени с целыми коэффициентами. При решении таких задач используется теорема.
Теорема. Для того чтобы несократимая дробь p/q была корнем уравнения an xn + an-1 xn-1 + ... + a0 = 0 с целыми коэффициентами, необходимо, чтобы число р было делителем свободного члена а0, а число q – делителем старшего коэффициента an (причем q¹0 и an¹0).
Если уравнение имеет целые коэффициенты, а старший коэффициент равен единице (т.е. аn=1), то рациональными корнями этого уравнения могут быть только целые числа, которые являются делителями свободного члена а0.
f(x) = 12 x5 + 18 x4 - 45 x3 - 45 x2 + 18 x + 12
А
лгоритм

Цикл_для
(
i = 1; i <= a0; i++)
Нет

(а0/i)==1
да

Нет
a5*pow(x,5)
+a4*pow(x,4)+ a3*pow(x,3)+a2*pow(x,2)+
a1*x+a0)
== 0

Да

Нет
a5*pow(x,5)
+a4*pow(x,4)+ a3*pow(x,3)+a2*pow(x,2)+
a1*x+a0)
== 0

Да


Цикл_для i


Текст программы
#include <math.h>
#include <stdio.h>
int main ()
{
int n =5;
printf("Shilak E.M. \n");
printf("Gruppa C-31 \n");
printf("Variant 22 \n");
printf("Naxozdenie racionalnix kornej polinoma \n");
int a5 = 12, a4 = 18, a3 = -45, a2 = -45, a1 = 18, a0 = 12;
printf("korni polinoma: \n");
for (int i = 1; i <= a0; i++)
if (a0 % i == 0)
{
int x;
x = i;
if ((a5*pow(x,5) + a4*pow(x,4)+a3*pow(x,3)+a2*pow(x,2)+a1*x+a0) == 0)
printf(" %i \n", x);
x = -i;
if ((a5*pow(x,5) + a4*pow(x,4)+a3*pow(x,3)+a2*pow(x,2)+a1*x+a0) == 0)
printf(" %i \n", x);
}
printf("Nagmite 'Enter' dlya vihoda.\n");
getchar();
return 0;
}
Внешняя спецификация.

