#02 ふれてみよう高校数学 代数と式の操作

因数分解の基本

因数分解とは

想像してみてください——ケーキを焼いたあとに、もとの材料(卵・小麦粉・砂糖)に分解できたら便利ですよね。数式でも同じことができます。前回学んだ「展開」の逆操作が因数分解です。展開が「積 → 和」なら、因数分解は「和 → 積」。

展開:  (x + 2)(x + 3)  →  x² + 5x + 6
因数分解: x² + 5x + 6  →  (x + 2)(x + 3)

なぜ因数分解が重要なのか? 方程式の解を求めるとき、グラフの形を読むとき、分数式を約分するときなど、代数のあらゆる場面で登場します。


ステップ1:共通因数を取り出す

最初に確認すること:すべての項に共通する因数はないか

たとえば 6x2+9x6x^2 + 9x は、各項が「3x3x の何倍か」になっています。だから 3x3x でくくることができます。

6x² + 9x = 3x(2x + 3)
元の式共通因数因数分解後
4x2+8x4x^2 + 8x4x4x4x(x+2)4x(x + 2)
6a2b3ab26a^2b - 3ab^23ab3ab3ab(2ab)3ab(2a - b)
x3x2+xx^3 - x^2 + xxxx(x2x+1)x(x^2 - x + 1)

共通因数を見落とすと後の因数分解が複雑になります。「まず全部に共通するものはないか?」と最初に確認する習慣をつけましょう。


ステップ2:公式による因数分解

展開の公式を逆に読むと因数分解の公式になります。「逆再生ボタン」を押すイメージです。

完全平方式

a² + 2ab + b² = (a + b)²
a² - 2ab + b² = (a - b)²

見分け方のポイント:「x2x^2(完全な平方)」「b2b^2(完全な平方)」「真ん中が 2ab2ab(その2倍)」という3点セットを探しましょう。

例:x2+6x+9=(x+3)2x^2 + 6x + 9 = (x + 3)^22ab=6x2ab = 6xb=3b = 3

差の平方(平方の差)

a² - b² = (a + b)(a - b)

「2つの完全な平方が引き算になっている」形を見たら、この公式の出番です。

例:x225=(x+5)(x5)x^2 - 25 = (x + 5)(x - 5)

これは非常によく使います。「2つの完全平方の差」を見たら即座に反応できるようにしましょう。


ステップ3:x2+px+qx^2 + px + q の因数分解

x2+5x+6x^2 + 5x + 6 を例に考えます。これを (x+α)(x+β)(x + \alpha)(x + \beta) の形に因数分解したいとき、FOIL法を逆に考えると:

(x + α)(x + β) = x² + (α+β)x + αβ

つまり、「積が qq で、和が pp になる 2 つの数」を探せばよいのです。

  • α+β=5\alpha + \beta = 5xx の係数)
  • α×β=6\alpha \times \beta = 6(定数項)

を満たす整数の組 (α,β)(\alpha, \beta) を探します。

66 の因数対を全て列挙:

α\alphaβ\betaαβ\alpha\betaα+β\alpha+\beta
1667
2365
-1-66-7
-2-36-5

α=2, β=3\alpha = 2,\ \beta = 3 が条件を満たすので:

x² + 5x + 6 = (x + 2)(x + 3)

下のデモでは、候補の数の組を1つずつ試しながら、正解の組み合わせが光る様子を確認できます。

x²+5x+6 の因数対を探すアニメーション:正しい組み合わせが光る
var t = 0;
var pairs = [
[1, 6], [2, 3], [-1, -6], [-2, -3], [3, 2], [6, 1]
];
var current = 0;
var timer = 0;

function loop() {
ctx.clearRect(0, 0, W, H);
t++;
timer++;
if (timer > 40) { timer = 0; current = (current + 1) % pairs.length; }

ctx.fillStyle = '#94a3b8';
ctx.font = '15px monospace';
ctx.textAlign = 'center';
ctx.fillText('x² + 5x + 6 を因数分解する', W/2, 30);
ctx.fillText('α × β = 6  かつ  α + β = 5 となる整数を探す', W/2, 54);

var rowH = 32;
var startY = 80;
var cols = [W/2 - 160, W/2 - 60, W/2 + 40, W/2 + 140];

ctx.fillStyle = '#64748b';
ctx.font = '13px monospace';
ctx.fillText('α', cols[0], startY);
ctx.fillText('β', cols[1], startY);
ctx.fillText('α × β', cols[2], startY);
ctx.fillText('α + β', cols[3], startY);

for (var i = 0; i < pairs.length; i++) {
  var alpha = pairs[i][0], beta = pairs[i][1];
  var prod = alpha * beta, sum = alpha + beta;
  var y = startY + (i + 1) * rowH;
  var isCorrect = (prod === 6 && sum === 5);
  var isCurrent = (i === current);

  if (isCorrect) {
    ctx.fillStyle = isCurrent ? '#22c55e' : '#166534';
    ctx.fillRect(W/2 - 190, y - 18, 380, 26);
    ctx.fillStyle = '#ffffff';
  } else if (isCurrent) {
    ctx.fillStyle = '#1e3a5f';
    ctx.fillRect(W/2 - 190, y - 18, 380, 26);
    ctx.fillStyle = '#93c5fd';
  } else {
    ctx.fillStyle = '#94a3b8';
  }

  ctx.font = (isCorrect ? 'bold' : '') + ' 14px monospace';
  ctx.fillText(alpha, cols[0], y);
  ctx.fillText(beta, cols[1], y);
  ctx.fillText(prod, cols[2], y);
  ctx.fillText(sum + (isCorrect ? ' ← ✓' : ''), cols[3], y);
}

ctx.fillStyle = '#fbbf24';
ctx.font = 'bold 15px monospace';
ctx.fillText('答え:(x + 2)(x + 3)', W/2, 284);

requestAnimationFrame(loop);
}
loop();

ステップ4:ax2+bx+cax^2 + bx + c(たすき掛け)

a1a \neq 1 の場合は少し複雑になります。2x2+7x+32x^2 + 7x + 3 を因数分解してみましょう。

(px+q)(rx+s)(px + q)(rx + s) とおくと、展開したときに:

  • pr=2pr = 2x2x^2 の係数)
  • qs=3qs = 3(定数項)
  • ps+qr=7ps + qr = 7xx の係数)

という3つの条件を同時に満たす組を探します。この「斜めに掛けて足す」手順をたすき掛けと呼びます。

たすき掛けの手順:

p × s = 1 × 3 = 3
q × r = 1 × 2 = 2    → 交差和 = 3 + 2 = 5 ✗

p × s = 3 × 1 = 3
q × r = 1 × 2 = 2    → 試行継続...

2 | 1    →   2×3=6
  | 3    →   1×1=1   合計 6+1=7 ✓

答え:(2x + 1)(x + 3)

確認:(2x+1)(x+3)=2x2+6x+x+3=2x2+7x+3(2x + 1)(x + 3) = 2x^2 + 6x + x + 3 = 2x^2 + 7x + 3


矩形モデルで因数分解を「見る」

(x+2)(x+3)(x+2)(x+3) の形が長方形の面積を表すことを視覚化します。縦の長さ (x+2)(x+2)、横の長さ (x+3)(x+3) の長方形の面積が x2+5x+6x^2 + 5x + 6 です。面積を4つの部分に分けると、x2x^2(青)・3x3x(緑)・2x2x(紫)・66(赤)が現れます。これらを足すと x2+5x+6x^2 + 5x + 6 になります。

(x+2)(x+3) の矩形モデル:x²、5x、6 の各パーツの面積
var xVal, scale, ox, oy;

function loop() {
ctx.clearRect(0, 0, W, H);

xVal = Math.max(1, Math.min(8, (mx / W) * 9));
scale = 200 / (xVal + 3);
ox = 60;
oy = 50;

var xS = xVal * scale;
var s2 = 2 * scale;
var s3 = 3 * scale;

// x² region
ctx.fillStyle = '#3b82f6';
ctx.fillRect(ox, oy, xS, xS);

// 2x region (bottom of x²)
ctx.fillStyle = '#8b5cf6';
ctx.fillRect(ox, oy + xS, xS, s2);

// 3x region (right of x²)
ctx.fillStyle = '#22c55e';
ctx.fillRect(ox + xS, oy, s3, xS);

// 6 region (bottom-right corner)
ctx.fillStyle = '#ef4444';
ctx.fillRect(ox + xS, oy + xS, s3, s2);

// labels
ctx.fillStyle = '#fff';
ctx.font = 'bold 14px monospace';
ctx.textAlign = 'center';
ctx.fillText('x²', ox + xS/2, oy + xS/2 + 5);
ctx.fillText('2x', ox + xS/2, oy + xS + s2/2 + 5);
ctx.fillText('3x', ox + xS + s3/2, oy + xS/2 + 5);
ctx.fillText('6', ox + xS + s3/2, oy + xS + s2/2 + 5);

// axis labels
ctx.fillStyle = '#fbbf24';
ctx.font = '13px monospace';
ctx.textAlign = 'center';
ctx.fillText('x', ox + xS/2, oy - 10);
ctx.fillText('3', ox + xS + s3/2, oy - 10);
ctx.textAlign = 'right';
ctx.fillText('x', ox - 8, oy + xS/2 + 5);
ctx.fillText('2', ox - 8, oy + xS + s2/2 + 5);

ctx.fillStyle = '#e2e8f0';
ctx.font = '14px monospace';
ctx.textAlign = 'left';
var area = xVal*xVal + 5*xVal + 6;
ctx.fillText('x = ' + xVal.toFixed(1), ox, 290);
ctx.fillText('面積 = x² + 5x + 6 = ' + area.toFixed(1) + ' = (x+2)(x+3)', ox, 308);

requestAnimationFrame(loop);
}
loop();

練習問題

次の式を因数分解してください。

  1. x29x^2 - 9
  2. x27x+12x^2 - 7x + 12
  3. 2x2+5x+22x^2 + 5x + 2
  4. 4x220x+254x^2 - 20x + 25

解答:

  1. (x+3)(x3)(x+3)(x-3)(差の平方:9=329 = 3^2 なので (x+3)(x3)(x+3)(x-3)
  2. (x3)(x4)(x-3)(x-4)(積=12=12、和=7=-7 になる数の組は 3-34-4
  3. (2x+1)(x+2)(2x+1)(x+2)(たすき掛け)
  4. (2x5)2(2x-5)^2(完全平方式:4x2=(2x)24x^2 = (2x)^225=5225 = 5^220x=2×2x×520x = 2 \times 2x \times 5

まとめ

  • まず共通因数を探して取り出す——これをやると後が楽になります
  • a2b2=(a+b)(ab)a^2 - b^2 = (a+b)(a-b)差の平方は「2つの平方の引き算」を見たら即反応
  • a2±2ab+b2=(a±b)2a^2 \pm 2ab + b^2 = (a \pm b)^2完全平方式:「平方+2倍+平方」のパターン
  • x2+px+qx^2 + px + q は「積が qq、和が pp」になる数の組を探す
  • ax2+bx+cax^2 + bx + cたすき掛けで処理

次回は因数分解の応用として、グループ分け法や3乗の和・差の公式を扱います。