Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
любитель покушать
 Аватар для Севак
687 / 641 / 248
Регистрация: 25.09.2011
Сообщений: 1,313

Разложение многочлена на множители

29.09.2012, 15:56. Показов 3737. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые форумчане! В связи с большим кол-вом однотипных задач по разложению многочлена на множители, решил немного облегчить себе жизнь Что мы имеем? К, примеру уравнение x^3-4x^2+x+6=0. Его корнями будет один или несколько делителей свободного члена, т.е. 6. Находим эти делители, подставляем вместо x и смотрим, в каком случае у нас получается верное равенство. Вот, что я написал, но напортачил или недоделал что-то с приведение типов, или может еще-что, чего я не понимаю, вот код:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import java.util.ArrayList;
 
import javax.swing.JOptionPane;
 
 
public class NOD {
    public static void main(String[] args) {
        
        String x_str = JOptionPane.showInputDialog("Введите свободный член: ");
        x = Integer.parseInt(x_str);
        ArrayList a = new ArrayList();
        a=NOD(x);
        
        ArrayList b = new ArrayList();
        b=Check(a);
        
        for (int i=1; i<b.size(); ++i)
        {
            System.out.print(b.get(i)+"; ");
        }
        
 
    }
    
    public static ArrayList NOD(int x)
    {   
        ArrayList e = new ArrayList();
        int nod_koef = 0;
        for (int i=1; i<=x; ++i)
        {
            if (x % i == 0)
            {
                nod_koef=i;
                e.add(nod_koef);
                e.add(nod_koef*(-1));
            }
        }
        return e;
        
    }
    
    public static ArrayList Check(ArrayList e)
    {
        ArrayList coef = new ArrayList();
        ArrayList otv = new ArrayList();
        int sum=x;
        double degree=0;
        double chlen=0;
        int koef=0;
        
        String n_str = JOptionPane.showInputDialog("Введите степень многочлена: ");
        int n = Integer.parseInt(n_str);
        
        for(int i=1; i<=n; ++i)
        {
            String list_str = JOptionPane.showInputDialog("Введите коэфицент " + i + " элемента: ");
            int list = Integer.parseInt(list_str);
            coef.add(list);
        }
        
        for (int i=1; i<=e.size(); ++i)
        {
                int y=0;
                degree = n-y;
                chlen = Math.pow((double) e.get(i), degree);
                koef = (int) coef.get(i);
                sum+=koef*chlen;
                ++y;
            
            if (sum==0)
            {
                otv.add(e.get(i));
            }
        }
            
        return otv;     
    }
    
    private static int x;
}
Прошу подсказать где и что я сделал не так!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.09.2012, 15:56
Ответы с готовыми решениями:

Составить программу, которая бы для введенного натурального числа N выводила его разложение на простые множители
Составить программу на java, которая бы для введенного натурального числа N (N &lt;= 1000000000) выводила его разложение на простые...

Разложение многочлена на множители
Всем привет. Вечно возникают проблемы при разложении на множители. a2-9b2-2a+6b=a(a-2)-3b(3b-2)=? Подскажите, что дальше?

разложение многочлена на множители
Всем привет! Натолкните плиз на мысль, как преобразовался многочлен x^3-12x+16 в форму (х-2)^2 * (x+4) Пробовал и делить, и методом...

4
Эксперт функциональных языков программированияЭксперт по математике/физике
4313 / 2105 / 431
Регистрация: 19.07.2009
Сообщений: 3,204
Записей в блоге: 24
29.09.2012, 20:48
1. В типизированных языках нет типа "список просто". Всегда это "список конкретного типа". Например список интов или список строк. В Java это ArrayList<Integer> или ArrayList<Double>. По умолчанию ArrayList считается как ArrayList<Object>, поскольку любой объектный тип есть наследник типа Object.
2. Судя по рассуждениям и коду, все решения предполагаются целочисленными.
3. Удобнее (субъективно, конечно) использовать итераторы вместо прямого доступа по индексу. Это избавит от проблемы первого элемента, потому что у нас приняты две нумерации: с нуля и единицы, и код становится чуть более понятным. Опять же, последнее очень субъективно.

Этот код перебирает делители последнего члена и печатает нули многочлена среди них (правда, изменил порядок ввода коффициентов)

Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package Polyn;
 
import java.util.ArrayList;
import javax.swing.JOptionPane;
 
 
public class NOD {
    public static void main(String[] args) {
 
        String x_str = JOptionPane.showInputDialog("Введите свободный член: ");
        x = Integer.parseInt(x_str);
        ArrayList<Integer> a = NOD1(x);
 
        ArrayList<Integer> b = Check(a);
 
        for (int value : b)
        {
            System.out.print(value+"; ");
        }
 
 
    }
 
    public static ArrayList<Integer> NOD1(int x)
    {
        ArrayList<Integer> e = new ArrayList<Integer>();
        int nod_koef = 0;
        for (int i=1; i<=x; ++i)
        {
            if (x % i == 0)
            {
                nod_koef=i;
                e.add(nod_koef);
                e.add(nod_koef*(-1));
            }
        }
        return e;
 
    }
 
    public static ArrayList<Integer> Check(ArrayList<Integer> e)
    {
        ArrayList<Integer> coef = new ArrayList<Integer>();
        ArrayList<Integer> otv = new ArrayList<Integer>();
 
        String n_str = JOptionPane.showInputDialog("Введите степень многочлена: ");
        int n = Integer.parseInt(n_str);
 
        for(int i=0; i<n; ++i)
        {
            String list_str = JOptionPane.showInputDialog("Введите коэфицент " + (n-i) + " элемента: ");
            int list = Integer.parseInt(list_str);
            coef.add(list);
        }
 
        for(Integer x_value : e)
        {
            Integer y = 0;
            for(Integer k : coef)
                y = y*x_value + k;
            if (y*x_value + x == 0) otv.add(x_value);
        }
 
        return otv;
    }
 
    private static int x;
 
}
1
любитель покушать
 Аватар для Севак
687 / 641 / 248
Регистрация: 25.09.2011
Сообщений: 1,313
29.09.2012, 21:13  [ТС]
Mysterious Light, спасибо тебе большое, все стало ясно) Только не могли бы объяснить, что этой за аргументы в цикле for? Раньше просто не сталкивался с таким типом

Java
1
2
3
4
5
6
7
for(Integer x_value : e)
        {
            y = 0;
            for(Integer k : coef)
                y = y*x_value + k;
            if (y*x_value + x == 0) otv.add(x_value);
        }
зы: в своем исходнике поставлял типы к спискам, заменил неудачный последний цикл на ваш и все заработало) вот, что получилось:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import java.util.ArrayList;
 
import javax.swing.JOptionPane;
 
public class Mnogochlen {
    
    public static void main(String[] args) {
        
        String x_str = JOptionPane.showInputDialog("Введите свободный член: ");
        x = Integer.parseInt(x_str);
        ArrayList<Integer> a = NOD(x);
        
        ArrayList<Integer> b = Check(a);
        
        for (int i=0; i<b.size(); ++i)
        {
            System.out.print(b.get(i)+"; ");
        }
    }
    
    public static ArrayList<Integer> NOD(int x)
    {   
        ArrayList<Integer> e = new ArrayList<Integer>();
        int nod_koef = 0;
        for (int i=1; i<=x; ++i)
        {
            if (x % i == 0)
            {
                nod_koef=i;
                e.add(nod_koef);
                e.add(nod_koef*(-1));
            }
        }
        return e;
        
    }
    
    public static ArrayList Check(ArrayList<Integer> e)
    {
        ArrayList<Integer> coef = new ArrayList<Integer>();
        ArrayList<Integer> otv = new ArrayList<Integer>();
        
        String n_str = JOptionPane.showInputDialog("Введите степень многочлена: ");
        int n = Integer.parseInt(n_str);
        
        for(int i=1; i<=n; ++i)
        {
            String list_str = JOptionPane.showInputDialog("Введите коэфицент " + i + " элемента: ");
            int list = Integer.parseInt(list_str);
            coef.add(list);
        }
        
        for(Integer x_value : e)
        {
            int y = 0;
            for(Integer k : coef)
                y = y*x_value + k;
            if (y*x_value + x == 0) otv.add(x_value);
        }
        
            
        return otv;     
    }
    
    private static int x;
}
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
29.09.2012, 23:25
Цитата Сообщение от Mysterious Light Посмотреть сообщение
В типизированных языках нет типа "список просто". Всегда это "список конкретного типа". Например список интов или список строк. В Java это ArrayList<Integer> или ArrayList<Double>. По умолчанию ArrayList считается как ArrayList<Object>, поскольку любой объектный тип есть наследник типа Object.
На самом деле ситуация немного хитрее, женерики (которые в квочках <GenericType>) существуют только на этапе разработки и компиляции
(на них может ругнуться компилятор), но в рантайме этих типов нет, всё превращается в класс без типизации
(например ArrayList<Integer> будет одинаков с просто ArrayList) и всё это происходит из-за "type erasure"
0
Эксперт функциональных языков программированияЭксперт по математике/физике
4313 / 2105 / 431
Регистрация: 19.07.2009
Сообщений: 3,204
Записей в блоге: 24
30.09.2012, 15:27
Цитата Сообщение от Севак Посмотреть сообщение
в своем исходнике поставлял типы к спискам, заменил неудачный последний цикл на ваш и все заработало)
Проверьте на несимметричные тесты: x^2-x-2=0, например.

Цитата Сообщение от Севак Посмотреть сообщение
Только не могли бы объяснить, что этой за аргументы в цикле for?
Называется for-each циклы. В Java эта конструкция сопряжена с интерфейсами Iterable/Iterator. Прочитайте их описание и объявление.

Цитата Сообщение от mutagen Посмотреть сообщение
На самом деле ситуация немного хитрее
Да, простите, забылся немного. Тем не менее, как мне кажется, они мыслятся как операторы над типами или типы, параметризованные другими типами. В общем, ИМХО, в рядовых задачах как-то не ощущается то, они участвуют ли лишь во время компиляции и JVM о них не знает, или наоборот.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.09.2012, 15:27
Помогаю со студенческими работами здесь

Разложение многочлена на множители
Помогите разложить многочлен на множители x4+10x3+35x2+50x&gt;=0

Разложение многочлена на неприводимые множители
Добрый вечер! Помогите, пожалуйста разложить многочлен x7-4x5-x4+4x3+4x2-4 на неприводимые множители над полем комплексных и вещественных...

Разложение многочлена на неприводимые множители
Укажите вариант правильного разложения многочлена на неприводимые множители а) 4(х – 1/2)2(х + 3)(х4 + 1) в)...

Разложение многочлена на неприводимые множители
Доброго времени суток) подскажите, помогите решить данную задачу: Разложение многочлена на неприводимые множители: Разложить многочлен...

Разложение многочлена на множители. Алгебра, 7 класс
Добрый вечер! Пожалуйста, помогите дорешать пример, никак не сходится ни с решебником, ни с учебником. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru