-- 整数問題を解く (2009/04/27 01:48) - 868PV

こちら、弟からの課題です。



これを満たすx,y,zの整数解を求めるべし。

自然数という条件を勝手につけてしまったけれど、以下に解法。
整数問題をコンピュータに解かせるというのは、良い勉強になります。

#include <stdio.h>

main(){

int x, y, z;

for( x = 2; 3*x*3 + 3*4 + 2*4*x >= x*3*4; x++ ) // xのループ
for( y = 3; 3*x*y + y*4 + 2*4*x >= x*y*4; y++ ) // yのループ
for( z = 4; 3*x*y + y*z + 2*z*x >= x*y*z; z++ ) // zのループ
if( 3*x*y + y*z + 2*z*x == x*y*z ) // 式を満たすか
printf( "(x, y, z) = (%d, %d, %d)\n", x, y, z );

}


与式を次のように変形したのは、わたくしではありません。



コンピュータに計算させることを考えると、小数計算をしなくて良いので大変有利。
計算機的な誤差も発生しないので良いです。

問題はどうやって有限の計算にするかということでした。
思考するときは先の式の方が考えやすいので、再び掲載。



式の左辺は変数が大きくなると小さくなります。
それぞれの変数がある値より大きくなると、右辺が1を下回ります。
その時点で計算をやめてループを抜ければ良いという発想です。

計算結果がこちら。

(x, y, z) = (2, 5, 30)
(x, y, z) = (2, 6, 18)
(x, y, z) = (2, 7, 14)
(x, y, z) = (2, 8, 12)
(x, y, z) = (2, 10, 10)
(x, y, z) = (2, 12, 9)
(x, y, z) = (2, 16, 8)
(x, y, z) = (2, 28, 7)
(x, y, z) = (3, 4, 18)
(x, y, z) = (3, 6, 9)
(x, y, z) = (3, 12, 6)
(x, y, z) = (3, 30, 5)
(x, y, z) = (4, 3, 36)
(x, y, z) = (4, 4, 12)
(x, y, z) = (4, 8, 6)
(x, y, z) = (5, 4, 10)
(x, y, z) = (5, 10, 5)
(x, y, z) = (5, 40, 4)
(x, y, z) = (6, 3, 18)
(x, y, z) = (6, 4, 9)
(x, y, z) = (6, 6, 6)
(x, y, z) = (6, 24, 4)
(x, y, z) = (8, 4, 8)
(x, y, z) = (8, 16, 4)
(x, y, z) = (10, 5, 6)
(x, y, z) = (12, 3, 12)
(x, y, z) = (12, 12, 4)
(x, y, z) = (14, 4, 7)
(x, y, z) = (15, 6, 5)
(x, y, z) = (20, 10, 4)
(x, y, z) = (30, 3, 10)
(x, y, z) = (36, 9, 4)


それからそれから。
このプログラムが結構コンパクトにまとまっているのは、for文のおかげです。
whileで書こうと思ったら3〜4倍くらいの行数になってしまう・・・。

-- 参考文献

-- 関連項目
すもいち 「負の整数は考えない方向?」 (2009/04/27 09:52)
かってぃ 「負の整数も解になりうるよね・・・?こないだ考えていたときに勝手に自然数と思いこんで解いていたので、さっき問題を見なおして驚愕したってわけ!」 (2009/04/27 10:03)
えんぺらあ 「for文の中に条件を入れるってのは盲点でした」 (2009/04/29 02:29)
かってぃ 「できるだけまとめた方が行数が少なくできるからね!ちなみに自然数でなく整数とすると無限にあるらしい・・・。」 (2009/04/29 19:07)

名前
コメント
更新情報
コメント「Johnf318さん」(2015/11/30 06:26)
コメント「もちもちさん」(2015/10/15 01:25)
コメント「しもさんさん」(2014/07/11 12:57)
コメント「ljilchさん」(2014/06/28 02:40)
コメント「ledogoさん」(2013/06/25 23:11)
コメント「tcrwefcxtjさん」(2013/06/25 21:00)
コメント「gihjfldrwさん」(2013/06/23 08:07)
コメント「yfaewyqviさん」(2013/06/23 03:12)
コメント「Papan3世さん」(2013/05/09 11:48)
コメント「Papan3世さん」(2013/05/09 11:46)
コメント「Papan3世さん」(2013/05/09 11:45)
コメント「Papan3世さん」(2013/05/09 11:40)
コメント「Papan3世さん」(2013/05/09 11:37)
コメント「さん」(2013/04/21 01:57)
コメント「上田朋哉さん」(2013/04/08 02:43)
コメント「syazaqxさん」(2013/02/14 11:36)
コメント「seqdspさん」(2012/11/08 02:34)
コメント「kzghepさん」(2012/11/03 21:45)
コメント「さん」(2012/10/16 08:05)
コメント「yflpfhftbvpさん」(2012/07/21 14:51)
コメント「szodydさん」(2012/06/22 15:38)
コメント「nkhkajuttzさん」(2012/06/20 03:23)
コメント「jjomlllxさん」(2012/02/13 12:34)
コメント「さん」(2011/10/28 14:11)
コメント「onmqdqobrpdさん」(2011/10/15 03:57)
コメント「さん」(2011/08/20 14:05)
コメント「さん」(2011/06/26 20:59)
コメント「bfixkuohhzoさん」(2011/06/10 00:04)
コメント「さん」(2011/05/24 13:47)
コメント「dyecrnさん」(2011/05/12 20:06)
コメント「atkyzmさん」(2011/03/02 07:59)
日記「新年を迎えまして(4)[1541]」 (2011/01/23 00:17)
電子工学「TwitCrew[1895]」 (2011/01/02 06:22)
コメント「かってぃさん」(2010/12/07 15:49)
コメント「通りすがりさん」(2010/12/02 23:37)
電子工学「ソーシャル目覚まし[2750]」 (2010/11/14 07:41)
その他「自己紹介[7445]」 (2010/10/16 01:36)
コメント「かってぃさん」(2010/10/15 02:03)
コメント「えんぺらあさん」(2010/10/15 02:00)
電子工学「性格の木[1683]」 (2010/10/15 01:43)
PR

プロフィール
名前: かってぃ
職業: 学生、性別: 男性、年齢: 22歳、住所: 横浜市
理系用語
コンテンツ
トップページ
自己紹介
電子工学

料理
勉強
日記
ノート
自転車
その他
本棚
一言メモ
電子回路コレクション
ヘッドホンアンプのまとめ
リンク
三度の飯とエレクトロン
choilog
TwitCrew
Questo
Ropi.me
studylog
つい、投票。
tvtw - ツイッターでテレビ実況
理系用語
理系用語bot on twitter

ぷよぷよ!!クエスト 攻略
気ままでいたいがあんまり気ままではない感じのブログ
魚料理と簡単レシピ
素晴らしき哉,電気工学的人生!
アンチ・バベルの塔
大学生ブログランキング