因数分解したい二次式 ax²+bx+c の係数 a・b・c を入力してください。下の数式は入力欄と連動していて、係数の部分を直接書き換えても計算できます。
このページでできること
- 二次式 \(ax^{2}+bx+c\) を、係数 \(a\)・\(b\)・\(c\) を入れるだけで有理数の範囲(整数係数の一次式の積)で因数分解できます
- \(a\) が \(1\) でない式では、たすき掛けの筆算がそのまま表示されるので、途中の考え方まで確認できます
- 共通因数のくくり出し・\((x+2)^{2}\) のような完全平方式・\(x^{2}-9\) のような平方の差にも対応しています
- 因数分解できない式は、判別式 \(D = b^{2} - 4ac\) を根拠に「なぜできないか」まで表示します
- 式のやさしい解説・Excel/Googleスプレッドシート/Python用のコピペ数式・計算ドリル(演習問題)もこのページにまとまっています
この計算は何の役に立つ?
ボールを投げ上げたときの高さは時間 \(t\) の二次式で表せます。例えば秒速20mで真上に投げたときの高さ(m)は、およそ \(h = 20t - 5t^{2}\) です(空気抵抗を無視し、重力による落下分をおよそ \(5t^{2}\) とした概算です)。
これを因数分解すると \(h = 5t(4 - t)\) となり、掛け算の形になったおかげで「\(h = 0\)(地面の高さ)になるのは \(t = 0\)(投げた瞬間)と \(t = 4\)(戻ってきた瞬間)」と一目で読み取れます。ロケットや砲弾の弾道計算も、同じ考え方の延長線上にあります。
二次方程式 \(ax^{2}+bx+c = 0\) は、左辺が因数分解できれば「掛けて \(0\) になるなら、どちらかの因数が \(0\)」という性質だけで一瞬で解けます。解の公式より計算量が少なく、符号ミスも起きにくいため、高校入試・大学入試・資格試験では最初に試す標準の解き方です。
入試の二次方程式の多くは因数分解で解ける係数で作られているので、たすき掛けまで身に付けておくと得点源になります。
エアコンの温度制御・ドローンの姿勢制御・自動車のクルーズコントロールなどの設計では、システムの性質を表す多項式(特性方程式)を因数分解して根を調べ、動きが安定するか(暴走・発振しないか)を判定する手法が使われています。
「多項式を因数の積に分けて、それぞれの根から全体の挙動を読む」という発想は、二次式のたすき掛けと地続きの考え方です。
高校数学III や大学の微分積分では、\(\dfrac{1}{x^{2}+5x+6}\) のような分数の式を積分するとき、まず分母を \((x+2)(x+3)\) と因数分解してから、\(\dfrac{1}{x+2} - \dfrac{1}{x+3}\) という簡単な分数の差に分け直します(部分分数分解)。
分母の因数分解ができないとこの手順が始まらないため、二次式の因数分解は微分積分を支える土台の技術になっています。約分や極限の計算でも、分子・分母の因数分解は毎回のように登場します。
「価格を上げると1個あたりの利益は増えるが、売れる個数が減る」という状況では、売上が価格 \(p\) の二次式になります。例えば「価格 \(p\) 円のとき \(100-p\) 個売れる」という単純化したモデルなら、売上は \(p(100-p)\) 円です。
この掛け算の形(因数分解された形)から「\(p = 0\) 円と \(p = 100\) 円で売上が \(0\) になり、その中間に売上が最大になる価格がある」と読み取れます。実際の市場はもっと複雑ですが、二次式を積の形で眺めて全体像をつかむ考え方は、経済学の入門で最初に学ぶ道具の一つです。
式
用語・記号の解説
記号
| \(a,\ b,\ c\) | エー・ビー・シー | 二次式 \(ax^{2}+bx+c\) の係数。\(a\) が \(x^{2}\) の係数、\(b\) が \(x\) の係数、\(c\) が定数項です。「決まった数」を表すときはアルファベットの最初の方の文字 \(a,\ b,\ c\) を使う慣例があります。 |
| \(x\) | エックス | まだ決まっていない数(変数・未知数)を表す文字。未知の数にアルファベットの終わりの方の文字 \(x,\ y,\ z\) を使う慣例は、数学者デカルトに由来するといわれます。 |
| \(p,\ q,\ r,\ s\) | ピー・キュー・アール・エス | 因数分解の結果 \((px+q)(rx+s)\) に出てくる4つの整数。たすき掛けは、この4つの数の組み合わせを筆算で探す方法です。 |
| \(m,\ n\) | エム・エヌ | \(a=1\) のときに探す「足すと \(b\)・掛けると \(c\) になる2つの数」。個数や整数を表す文字には number(数)の頭文字 \(n\) と、その隣の \(m\) がよく使われます。 |
| \(D\) | ディー | 判別式 \(D = b^{2} - 4ac\) を表す文字。discriminant(判別式)の頭文字です。 |
| \(\sqrt{\ \ }\) | ルート(根号) | 2乗するとその数になる正の数(平方根)を表す記号。\(\sqrt{25} = 5\) です。根を意味するラテン語 radix の頭文字 r を変形した形に由来するといわれます。 |
| \(x^{2}\) | エックスのにじょう(エックスじじょう) | \(x\) を2回掛けたもの(\(x^{2} = x \times x\))。右上の小さい数(指数)が掛ける回数を表します。 |
| \((x+3)^{2}\) | エックスたすさんのにじょう | \((x+3)(x+3)\) のこと。同じ因数が2つ並んだときは、2乗の形でまとめて書きます(完全平方式)。 |
用語
| 因数分解 | いんすうぶんかい | 足し算・引き算でつながった式を、掛け算の形(積)に直すこと。\(x^{2}+5x+6 = (x+2)(x+3)\) のように直します。展開のちょうど逆の操作です。 |
| 因数 | いんすう | 掛け算の形に直したときの、掛けられている1つ1つの式や数。\((x+2)(x+3)\) の \(x+2\) と \(x+3\) がそれぞれ因数です。 |
| 展開 | てんかい | かっこの付いた積の形を、分配法則でかっこを外して足し算・引き算の形に直すこと。因数分解の逆の操作で、因数分解の検算に使えます。 |
| 二次式 | にじしき | \(2x^{2}+7x+3\) のように、\(x^{2}\) の項が最高次の式。一般の形を \(ax^{2}+bx+c\)(\(a \neq 0\))と書きます。 |
| 一次式 | いちじしき | \(2x+1\) のように、\(x\) の1乗までしか出てこない式。一般の形を \(px+q\) と書きます。二次式の因数分解は「一次式 × 一次式」の形を探す作業です。 |
| 項 | こう | 式を足し算・引き算の区切りで分けた、1つ1つのかたまり。\(2x^{2}+7x+3\) の項は \(2x^{2}\)・\(7x\)・\(3\) の3つです。 |
| 係数 | けいすう | 文字の前に付いている数。\(2x^{2}\) の \(2\) が係数です。\(x^{2}\) のように数が書かれていない項の係数は \(1\) と考えます。 |
| 定数項 | ていすうこう | \(2x^{2}+7x+3\) の \(3\) のように、\(x\) を含まない「数字だけの項」のことです。 |
| 共通因数 | きょうつういんすう | すべての項に共通して掛けられている数や文字。\(2x^{2}+6x+4\) ならどの項も \(2\) で割れるので、\(2\) が共通因数です。因数分解では一番最初にくくり出します。 |
| たすき掛け | たすきがけ | \(a\) が \(1\) でない二次式を因数分解する筆算の方法。\(a\) と \(c\) をそれぞれ2つの数の積に分けて縦に並べ、斜めに掛けて足した値が \(b\) になる組み合わせを探します。斜めの2本の線が、和服の「たすき」を掛けた姿に似ていることが名前の由来といわれます。 |
| 判別式 | はんべつしき | \(D = b^{2} - 4ac\) のこと。二次方程式の解の種類(実数解2つ・重解・虚数解)を判別する式で、因数分解では「\(D\) が平方数かどうか」で、有理数の範囲で分解できるかがわかります。 |
| 平方数 | へいほうすう | \(0,\ 1,\ 4,\ 9,\ 16,\ 25,\ \dots\) のように、整数の2乗になっている数。判別式 \(D\) が平方数なら \(\sqrt{D}\) が整数になります。 |
| 完全平方式 | かんぜんへいほうしき | \((x+3)^{2}\) のように、同じ一次式の2乗になっている式。判別式が \(D=0\) のとき、因数分解の結果はこの形になります。 |
| 平方の差 | へいほうのさ | \(x^{2}-9\) のような「2乗から2乗を引いた」形。\(x^{2}-9 = (x+3)(x-3)\) のように「和と差の積」に因数分解できます。 |
| 有理数 | ゆうりすう | 整数どうしの分数で表せる数(整数・有限小数を含みます)。このページの因数分解は「整数係数の一次式の積 × 共通因数」=有理数の範囲で行います。\(\sqrt{2}\) のような分数で表せない数は無理数といいます。 |
| 重解 | じゅうかい | 二次方程式の2つの解がぴったり重なって1つになったもの。\(D=0\)(完全平方式)のときに重解になります。 |
前提として理解しておくといいこと
このページの計算を「意味がわかって」使えるようになるために、前提として理解しておくといいことをまとめました。
つまずいたら、この表の内容に戻って復習するのが近道です。
| 正負の数の計算(中学1年) |
|
| 約数と積の分け方(小学5年〜中学1年) |
|
| 文字式と分配法則(中学2〜3年) |
|
| 平方数と平方根(中学3年) |
|
| 二次方程式と因数分解の関係(中学3年〜高校 数学I) |
|
| 解の公式と判別式(中学3年〜高校 数学I) |
|
Excelで計算する方法
| x²の係数 a | 2 |
| xの係数 b | 7 |
| 定数項 c | 3 |
| 判別式 D = b²−4ac | =B2^2-4*B1*B3 |
| √D | =IF(B4<0,"なし(D が負)",SQRT(B4)) |
| 有理数の範囲で因数分解できるか | =IF(B4<0,"できない",IF(SQRT(B4)=INT(SQRT(B4)),"できる","できない")) |
| x²の係数 a | 2 |
| xの係数 b | 6 |
| 定数項 c | 4 |
| 共通因数(係数の最大公約数) | =GCD(ABS(B1),ABS(B2),ABS(B3)) |
| くくり出した後のx²の係数 | =B1/B4 |
| くくり出した後のxの係数 | =B2/B4 |
| くくり出した後の定数項 | =B3/B4 |
| 定数項 c(掛けるとこの数) | 6 |
| xの係数 b(足すとこの数) | 5 |
| 候補の数 m | 2 |
| 相方 n = c ÷ m | =B1/B3 |
| 和 m + n | =B3+B4 |
| 判定 | =IF(B5=B2,"一致:(x+m)(x+n) で完成","不一致:別の m を試す") |
| 上の行のxの係数 p | 1 |
| 上の行の定数 q | 3 |
| 下の行のxの係数 r | 2 |
| 下の行の定数 s | 1 |
| x²の係数 = p×r | =B1*B3 |
| xの係数 = p×s + q×r(たすき掛け) | =B1*B4+B2*B3 |
| 定数項 = q×s | =B2*B4 |
1つ目の表は 2x²+7x+3 の判別式を求める例で、D は 25、√D は 5 になり「できる」と判定されます。
2つ目の表は 2x²+6x+4 の例で、共通因数 2 が求まり、くくり出した後の係数は 1・3・2 になります(GCDは正の数向けの関数なので、係数はABSで正に直してから使っています)。
3つ目の表は x²+5x+6 の例です。候補の数 m に 2 を入れると相方 n は 3、和は 5 で b と一致するので、(x+2)(x+3) と分解できるとわかります。m の欄にいろいろな約数を入れて試してください。
4つ目の表はたすき掛けの検算です。p=1・q=3・r=2・s=1 を入れると、x²の係数 2・xの係数 7・定数項 3 が出て、(x+3)(2x+1) を展開すると 2x²+7x+3 に戻ることが確かめられます。
Googleスプレッドシートで計算する方法
| x²の係数 a | 2 |
| xの係数 b | 7 |
| 定数項 c | 3 |
| 判別式 D = b²−4ac | =B2^2-4*B1*B3 |
| √D | =IF(B4<0,"なし(D が負)",SQRT(B4)) |
| 有理数の範囲で因数分解できるか | =IF(B4<0,"できない",IF(SQRT(B4)=INT(SQRT(B4)),"できる","できない")) |
| x²の係数 a | 2 |
| xの係数 b | 6 |
| 定数項 c | 4 |
| 共通因数(係数の最大公約数) | =GCD(ABS(B1),ABS(B2),ABS(B3)) |
| くくり出した後のx²の係数 | =B1/B4 |
| くくり出した後のxの係数 | =B2/B4 |
| くくり出した後の定数項 | =B3/B4 |
| 定数項 c(掛けるとこの数) | 6 |
| xの係数 b(足すとこの数) | 5 |
| 候補の数 m | 2 |
| 相方 n = c ÷ m | =B1/B3 |
| 和 m + n | =B3+B4 |
| 判定 | =IF(B5=B2,"一致:(x+m)(x+n) で完成","不一致:別の m を試す") |
| 上の行のxの係数 p | 1 |
| 上の行の定数 q | 3 |
| 下の行のxの係数 r | 2 |
| 下の行の定数 s | 1 |
| x²の係数 = p×r | =B1*B3 |
| xの係数 = p×s + q×r(たすき掛け) | =B1*B4+B2*B3 |
| 定数項 = q×s | =B2*B4 |
Pythonで計算する方法
from fractions import Fraction
from math import isqrt
# 因数分解したい二次式 ax² + bx + c の係数(整数)
a = 2
b = 7
c = 3
d = b * b - 4 * a * c # 判別式 D
if d < 0:
print("有理数の範囲では因数分解できません(D が負)")
elif isqrt(d) ** 2 != d:
print("有理数の範囲では因数分解できません(√D が整数にならない)")
else:
# 2つの解は有理数になる(Fractionが自動で約分してくれる)
root1 = Fraction(-b + isqrt(d), 2 * a)
root2 = Fraction(-b - isqrt(d), 2 * a)
# 解 n/L(約分済みの分数)から因数 (Lx − n) を作る
factor1 = (root1.denominator, -root1.numerator)
factor2 = (root2.denominator, -root2.numerator)
common = a // (factor1[0] * factor2[0]) # 前に残る共通因数
def factor_text(coef_x, constant):
x_part = "x" if coef_x == 1 else f"{coef_x}x"
if constant == 0:
return x_part
sign = "+" if constant > 0 else "-"
return f"({x_part} {sign} {abs(constant)})"
# 表示用:共通因数の 1 は省略、−1 は「-」だけにする
prefix = "" if common == 1 else "-" if common == -1 else str(common)
answer = prefix + factor_text(*factor1) + factor_text(*factor2)
# 元の式も教科書の書き方で表示する(係数1の「1」は省略、負の係数は − でつなぐ)
a_text = "" if a == 1 else "-" if a == -1 else str(a)
lhs = f"{a_text}x^2 {'+' if b >= 0 else '-'} {abs(b)}x {'+' if c >= 0 else '-'} {abs(c)}"
print(f"{lhs} = {answer}")
数式記述言語(LaTeX等)での書き方(コピペ可)
ax² + bx + c = (px + q)(rx + s)
ax^{2} + bx + c = (px + q)(rx + s)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>a</mi><msup><mi>x</mi><mn>2</mn></msup>
<mo>+</mo><mi>b</mi><mi>x</mi>
<mo>+</mo><mi>c</mi>
<mo>=</mo>
<mo>(</mo><mi>p</mi><mi>x</mi><mo>+</mo><mi>q</mi><mo>)</mo>
<mo>(</mo><mi>r</mi><mi>x</mi><mo>+</mo><mi>s</mi><mo>)</mo>
</mrow>
</math>
ax^2 + bx + c = (px + q)(rx + s)
Factor[a x^2 + b x + c]
factor(a*x^2 + b*x + c);
factor(a*x^2 + b*x + c, x)
ax^2 + bx + c = (px + q)(rx + s)
mA + mB = m(A + B)
mA + mB = m(A + B)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>m</mi><mi>A</mi>
<mo>+</mo>
<mi>m</mi><mi>B</mi>
<mo>=</mo>
<mi>m</mi>
<mo>(</mo><mi>A</mi><mo>+</mo><mi>B</mi><mo>)</mo>
</mrow>
</math>
mA + mB = m(A + B)
Factor[m A + m B]
factor(m*A + m*B);
factor(m*A + m*B)
mA + mB = m(A + B)
x² + (m + n)x + mn = (x + m)(x + n)
x^{2} + (m + n)x + mn = (x + m)(x + n)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msup><mi>x</mi><mn>2</mn></msup>
<mo>+</mo>
<mo>(</mo><mi>m</mi><mo>+</mo><mi>n</mi><mo>)</mo><mi>x</mi>
<mo>+</mo>
<mi>m</mi><mi>n</mi>
<mo>=</mo>
<mo>(</mo><mi>x</mi><mo>+</mo><mi>m</mi><mo>)</mo>
<mo>(</mo><mi>x</mi><mo>+</mo><mi>n</mi><mo>)</mo>
</mrow>
</math>
x^2 + (m + n)x + mn = (x + m)(x + n)
Factor[x^2 + (m + n) x + m n]
factor(x^2 + (m + n)*x + m*n);
factor(x^2 + (m + n)*x + m*n, x)
x^2 + (m + n)x + mn = (x + m)(x + n)
(px + q)(rx + s) = prx² + (ps + qr)x + qs
(px + q)(rx + s) = prx^{2} + (ps + qr)x + qs
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mo>(</mo><mi>p</mi><mi>x</mi><mo>+</mo><mi>q</mi><mo>)</mo>
<mo>(</mo><mi>r</mi><mi>x</mi><mo>+</mo><mi>s</mi><mo>)</mo>
<mo>=</mo>
<mi>p</mi><mi>r</mi><msup><mi>x</mi><mn>2</mn></msup>
<mo>+</mo>
<mo>(</mo><mi>p</mi><mi>s</mi><mo>+</mo><mi>q</mi><mi>r</mi><mo>)</mo><mi>x</mi>
<mo>+</mo>
<mi>q</mi><mi>s</mi>
</mrow>
</math>
(px + q)(rx + s) = prx^2 + (ps + qr)x + qs
Expand[(p x + q) (r x + s)]
expand((p*x + q)*(r*x + s));
expand((p*x + q)*(r*x + s))
(px + q)(rx + s) = prx^2 + (ps + qr)x + qs
D = b² − 4ac
D = b^{2} - 4ac
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>D</mi>
<mo>=</mo>
<msup><mi>b</mi><mn>2</mn></msup>
<mo>−</mo>
<mn>4</mn><mi>a</mi><mi>c</mi>
</mrow>
</math>
D = b^2 - 4ac
Discriminant[a x^2 + b x + c, x]
discrim(a*x^2 + b*x + c, x);
D = b^2 - 4*a*c;
D = b^2 - 4ac
ChatGPT に聞いて計算してもらう方法
あなたは数学(高校数学I)の計算アシスタントです。次の計算を、必ずPythonコードを実際に実行して行い、実行結果だけを根拠に回答してください(暗算や推測で答えないでください)。 二次式 2x^2 + 7x + 3 を有理数の範囲で因数分解してください。 次の内容をそれぞれ示してください。 1. 共通因数があればくくり出した式 2. 判別式 D = b^2 - 4ac の値と、D が平方数かどうか 3. 因数分解の結果(たすき掛けでどう数を分けたかも説明) 4. 結果を展開して元の式に戻ることの検算 Pythonでは sympy の factor / expand(無ければ fractions と math.isqrt)を使って計算し、計算に使ったコードと実行結果を示してください。
計算ドリル(演習問題)
このページの因数分解を、自分の手で計算できるようになるための演習問題です。
答えと解説は解答ページにあります。
使い方
-
1数値を入力計算したい数値を入力欄に入力します
-
2計算「計算する」ボタンを押します
-
3結果を確認計算結果がその場に表示されます。計算の考え方や式の解説も同じページで確認できます
DataChefの特徴
専門知識不要、直感的で簡単な操作
個人情報を登録することなく使用できます
「ダウンロード」押下でファイルを自動削除
クレジット表記不要
商用利用許諾の連絡も不要です
