dポイントプレゼントキャンペーン実施中!

プログラムで

x^2+ax+b
のa,bを入力した時因数分解が実行できるプログラムを作りたいのですが
x^2+ax+b=(x+c)(x+d)

a=c+d
b=cd

①に当てはまる全てのパターンを
forを通して探す


見つけた時
c,dに当てはめるで求めらるでしょうか?
もし見つけられる場合
②のfor文の作り方がわからないので、プログラムは自分のためにならないので文でお教え頂けるとありがたいです
注文をつけてしまいすいません

A 回答 (7件)

どうしても自分のやり方でやってみたい


プログラムの学習のためにどうしてもfor文を使いたい(解の公式は使いたくない)ということでしょうか?
そして、候補集合も使いたくない..と(候補集合の意味が分からないのかな?)

No.4さんが書かれていますが、すべて整数という条件なら、以下でできると思います
①変数cで、for文の最小値-b、最大値b、増分1でfor文を実行、
②このcの時のdをa-cから求める(a=c+dから)
③②のc,dでcdがbになるかチェックする
④bになれば求める解
(トピ主さんの方法より②のように変更した方がいいのでは?)

検証していないので間違ってるかも
    • good
    • 0

>プログラムは自分のためにならないので文でお教え頂けるとありがたいです



「①に当てはまる全てのパターン」を含む、要素数が有限である候補集合{(C,D)}を決め、
それに順番をつけて一列に並べる並べ方を決め、
その順番に実行するようにfor文を書く

でしょうか

個人的には、候補集合{(C,D)}の決め方に難儀し、
 C、Dともに整数といった条件がない限り、
結局、他の回答者の通り
 解の公式で候補集合{(C,D)}を決める
しか方法はない気がします。
    • good
    • 0

係数が虚数だと因数分解が出来ないのでiで整理する必要が出てきます

    • good
    • 0

a,b,c,dは全て整数であることが前提でしょうか?


そうであれば、for文で解をみつけることは可能です。
    • good
    • 0

-cと-dは2次方程式の根なので、中学で習う公式で求めるのが簡単。



実根なら二ュートン法という手も有りますが
手間がかかります。
    • good
    • 0

整数係数なのか実数係数なのかによってやり方は変わるけど, 普通は #1 のように零点を求めちゃう方が早い (精度に注意) だろうねぇ.



「②のfor文の作り方がわからない」とあるけど, 具体的には何がわからないんでしょうか?
    • good
    • 0

c=-{-a+√(a²-4b)}/2


d=-{-a-√(a²-4b)}/2

これを計算するだけ
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!