• ベストアンサー

直角三角形

直角三角形の直角をはさむ2辺をa,b(a≦b)とし,斜辺をcとします。a≦100,b≦100で,a,b,cがすべて整数となる組み合わせをすべて出力するプログラムを作りたいんです。 直角三角形ならば1(真),でなければ0(偽)と出るようにすればいいのでしょうか?こうなのかなとかいろいろ考えてると,どんどん頭がこんがらがって(>_<)

noname#157126
noname#157126

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

こんな感じでいいんじゃないかと思います ---------------------------------------------------------------- #include <stdio.h> #include <math.h> void main(void){ int a,b,c; int a2,wk; for(a=1;a<=100;a++){ a2=a*a; for(b=a;b<=100;b++){ c=(int)(sqrt(wk=a2+b*b)+0.5); if(wk==c*c){ printf("(a,b,c)=(%d,%d,%d)\n",a,b,c); } } } }

その他の回答 (3)

  • colder
  • ベストアンサー率43% (30/69)
回答No.4

一つ一つ捜す方法は他の方が書いているので、別の方法を紹介します。 a^2+b^2=c^2となる整数の組合せは、整数i, jを使って (i^2-j^2, 2*i*j, i^2+j^2)ですべて表すことが可能ですので、これをすべて列挙すればOK

noname#74310
noname#74310
回答No.3

整数演算のみを条件として、 int a,b,c,m,n; for (a=1;a<=100;a++){ for (b=a;b<=100;b++){ m=a*a+b*b;r=0; for (c=b;c<a+b;c++){ n=c*c; if (m==n) { r=1; break; } else if (m<n) break; } printf("r a=%d,b=%d,c=%d\n",r,a,b,c); } } 未検証

  • poohron
  • ベストアンサー率59% (574/971)
回答No.1

Cはほとんど知らない素人ですが、単純に考えて… 1. aの初期値=1   →while文? 2. bの初期値=1   →while文? 3. c=√(a^2+c^2)  →sqrt? 4. c=整数か判定 5. c=整数ならa,b,cを出力、整数でなければ6へ 6. bを1増やし、3へ戻ってループ。b=100まで判定したら7へ 7. aを1増やし、2へ戻ってループ。a=100まで判定したら8へ 8. 処理終了 整数の判定の仕方はよく分かりません。 文字列の長さで判定するとか、cを整数に変換したものとcの差が0なら整数と判定するとか、その辺は何とか考えてみてください。 うーん、もっと効率よく出来るのかな? それとも完全に的外れ? 詳しい方お願いします(^^;

関連するQ&A

  • 直角三角形に関する問題がわかりません

    「直角三角形において,直角をはさむ2辺の長さの和が一定なら,どんな形の三角形の斜辺が最も短くなるか?」 という問題でつまづきました. (考え)直角をはさむ2辺の和をb,そのうちの1辺をaとすると 斜辺^2=a^2+(b-a)^2 =2a^2-2ab+b^2 長さが負にはならないので 斜辺=√2a^2-2ab+b^2(√以下はすべて√のなか) よって2a^2-2ab+b^2が最小になるときを考えればよい. 2a^2-2ab+b^2=Pとおく P=2(a-b/2)^2+b^2/2 よってa=b/2のとき,Pは最小値をとる, よってこの直角三角形の,直角をはさむ2辺の長さは等しいので, 直角二等辺三角形 この解き方だと解けます. しかし,次の解き方ではできないので,何故できないのかを教えてください. (解)直角をはさむ2辺の和をb,そのうちの1辺をaとすると 斜辺^2=a^2+(b-a)^2 長さが負にはならないので 斜辺=√a^2+(b-a)^2(√以下はすべて√のなか) よってa^2+(b-a)^2が最小になるときを考えればよい. Q=a^2+(b-a)^2とする. Q=(b-a)^2+a^2 よってb=aのとき,Qは最小値をとる. これだとおかしい

  • 直角3角形と一次不等式

    <か≦か判断できないので質問します。 3辺の長さがそれぞれ2桁の整数である直角3角形がある。今斜辺の長さは他の1辺の長さの一の位と十の位の数字をいれかえた数であるとする。このとき、この3角形の3辺の長さを求めよ。 a,bは1,2,3,・・・,9のいずれかで、a>bとし、斜辺を10a+b,直角をはさむ1辺を10b+a,残りの辺をc(整数)とすると c^2+(10b+a)^2=(10a+b)^2,c^2=(10a+b)^2-(10b+a)^2, c^2=9*11*(a+b)*(a-b) a>bより、ここがわからない箇所です 0<a-b<a+b<17・・・(1) 自分はa=9かつb=8のとき直角3角形ができると思い。0<a-b<a+b≦17だと思ったのですが、ひょっとしたら、2辺の和は1辺より長いの条件などにより、a=9かつb=8にならないのかとも思い、自分の考えが正しいかどうかわかりません。本の記述(0<a-b<a+b<17)があっていたらその理由を教えてください。お願いします。問題の続きをすこし書くと、 c^2は完全平方数だから、(a+b)*(a-b)は11の倍数でないといけない。条件(1)よりa+b=11でa-bは完全平方数。 a-b=1,4,9を代入し連立方程式を解いて、a,b,cを求めています。答えは65,56,33です。

  • 直角三角形の斜辺の求め方

     底辺が√13、もう1辺と斜辺の長さがわからない直角三角形の斜辺の長さを求める問題です。2つの角度も不明です。長さのわからない2つの辺は正の整数という条件があります。三平方の定理を使うのは予想できたのですが、そこからどうしたらいいのかわかりません。数学が苦手なので、できれば丁寧な説明をつけていただければと思います

  • 直角三角形と共役複素数の関係

    直角三角形の斜辺をcとし、残りの2辺をa,bとした場合、ピタゴラスの定理からa+biとa-biをかけたものがc^2となりますが、これを幾何学的にイメージすることは可能なのでしょうか。

  • たぶん初歩の問題ですが。。。

    短大のプログラミングの授業で、問題が出されました。 『斜辺の長さが50以下で、3辺の長さがすべて整数の直角三角形となる場合は何通りあるかを計算させる処理を書きなさい。ただし、同じ数値の順番だけが違うものは一通りとします。 ヒント:Cを斜辺とする三角形A、B、Cは次の条件を満たしています。     Aの2乗+Bの2乗=Cの2乗 (2乗の書き方が分かりませんでした。ごめんなさい) 50以下のすべての3つの正の整数の組み合わせについて、この式が成り立っているかどうかを調べる。同じ数値の順番だけが違うものを除くにはどうすればよいかを考えてください。』 という問題なんですけど、ぜんぜん分からないんです(><)汗汗 いくら考えても、どう考えていいか全然分かりません。。。 プログラミング超初心者なんですけど、誰か教えて下さい!!

  • どうして=と直角が対応するのでしょうか?

    三平方の定理が成り立つのはどうしてかを考えてしまいました。 2つの数のそれぞれの2乗の和が3つ目の数の2乗に等しいとき 3つの数の大きさと等しい長さの3辺で作る三角形は直角三角形になります。 2つの異なる正方形があって、一方が他方に内接する図において 4つの合同な3角形と小さい方の正方形の面積の合計が、大きい正方形の面積に 等しいのことで三平方の定理の証明がされています。 http://www.geisya.or.jp/~mwm48961/math/m3pita02.htm 図を描く。 辺の長さを数とする。 面積を計算する。 面積が等しい。 展開して2abを消去する。 ということで、直角三角形の3つの辺の長さの関係がおお!そのとおりだ!と分かります。 でも、なにか、抜けている説明がある気がするのです。 うまくいえないので比喩で表現します。 手に持ったコップがあって、手を離すと、下に落ちます。 それは重力があるからです。 でも、重力ってどうしてあるの? というような感じです。つたわりません。 3つの数(a,b,c)の組み合わせがあって、a^2+b^2=c^2を満たすときだけ、 a,b,cの長さの辺の直角三角形になります。 a^2+b^2<c^2かつa+b>cのときは鈍角三角形 a^2+b^2>c^2かつa-b<cかつb-a<cのときは鋭角三角形 a+b<cやa-b>cやb-a>cのときは三角形ができません。 =のときだけ、直角三角形になります。 問いたいことは、 どうして、a^2+b^2=c^2と直角三角形が対応するのでしょうか? どうして、=と直角が対応するのでしょうか? どうして、a+b<cやa+b<cやa-b>cやb-a>cは書けるのに、三角形は描けないのでしょうか? です。 もしかして、X-Y座標平面上で2点D(d1.d2),E(e1,e2)を描いて 辺の長さを[(d1-e1)^2+(d2-e2)^2]^(1/2)と 計算することに決めたからでしょうか? 数と計算の全部 と 線と角度と作図の全部 を いい感じに対応させるとき a^2+b^2=c^2 と 直角三角形 が 対応ってことにするのが調子がいいいんだ! みたいな答えがあるような気がしています。

  • 直角三角形の斜辺から平行移動した場所の座標

    直角三角形の内側に四角形がある。 四角形は直角三角形の斜辺から平行移動した場所にある。 点Mは辺Cの中心点で、内側の四角形の横辺(辺Cと平行な辺)の中心点でもある。 求めたいもの:点PのX,Y座標(点Mからの) 得ている情報 (1)直角三角形の頂点の座標 (2)辺A,B,Cの長さ (3)点Mの座標 (4)内側の四角形の横辺(辺Cと平行な辺)と点M~点mまでの長さは任意値とする (5)内側の四角形の横辺(辺Cと平行な辺)の半分の長さがcであり、  緑色の直角三角形の斜辺になる、また四角形外側の直角三角形と相似であることから、  辺a = c x cos  辺b = c x sin と算出でき、点mから点Pまでの座標移動値はわかる。 点Mから点mまで、どれだけ縦(y)と横(x)に座標移動しているのか、 算出方法をご教授いただけたらと思います。

  • 三平方の定理の逆

    三平方の定理は直角三角形の斜辺以外の二辺をa,bとしたとき 残った斜辺cが a^2+b^2=c^2 で求められるという公式ですが 逆の「a^2+b^2=c^2なら直角三角形である」の証明はどうやってやるのでしょう?

  • 不思議な直角三角形

    先日、ある話を耳にしました。 「ある数字を思い浮かべ(aとします)、その数字を2乗し、2で割り、その数を差が2の二つの数に分ける(b,cとする)。するとa,b,cを3辺とする三角形は直角三角形になる」 たとえば、a=6とすると、二乗して36、÷2で18、差が2の2数は8と10となり、3辺が6,8,10の三角形は、比が3:4:5のご存知直角三角形になります。 たしかに、a=xとして、b,cを出し、三平方の定理を用いれば直角三角形であることは証明できます。しかし、なぜ2乗、÷2、差が2の2数という手順を踏む、ということが思い浮かんだのか、なんか不思議です。 どなたか不思議な方法をキッチリ説明できる、もしくは同じような面白い数学ネタを知っている方がいらっしゃいましたら、どうか教えていただきたいと思います。

  • 三平方の定理

    直角をはさむ2辺の長さがa,b、斜辺の長さがcの直角三角形がある。 この直角三角形の内接円の半径rとしたとき、rはa,b,cを用いて2通りの表し方ができ、この事を利用して三平方の定理(a^)+(b^)=cが成り立つことを証明する問題で 図は高さがa底辺b斜辺ガcです ○(a-r)+(b-r)=c これはどこから表されたのですか?

専門家に質問してみよう