プロが教える店舗&オフィスのセキュリティ対策術

大至急!!!
プログラミングC言語です。

2つの整数a.bを入力し、最大公約数と最小公倍数を求めなさい。

です。よろしくお願いします!

質問者からの補足コメント

  • 問題なんですが、

    ”2つの整数a.bを入力し、最大公約数、最小公倍数を求めなさい。”

    と言われただけなのですが、、、

    特に指定された文字などないです。
    大雑把すぎる質問ですが、ご協力のほどよろしくお願いします。

      補足日時:2018/01/30 00:22

A 回答 (3件)

素因数分解いらんかもしれん。



ぐぐったら、

ユークリッドのごじょほうで、最大公約数がでるらしい。


2つ自然数の最大公約数
と、
2つ自然数の最小公倍数を
かけたら。

は、
2つの自然数の積
と、等しくなるらしい。

3, 9の
最大公約数が3
最小公倍数が9

3×9=3×9

4, 5の最大公約数が1
最小公倍数が20

4×5=1×20

だから、ユークリッドのごじょほうで、
最大公約数だして。

a×bを、最大公約数で
割れば。

素因数分解しなくても。

最小公倍数、最大公約数
両方でるかも。
    • good
    • 0

なんで自分の頭で考えようとしないんだろう。

不思議だ。
その姿勢だとプログラミングなんかやっても、どのみち。
ものにならない。

ググればいろんな情報でてくるのに。
それつないで、いろいろやったら、なんとかなりそうものなのに。
それ。

今、ねころがりながら
スマートフォンいじってるから。
とてもじゃないが。
PC開いて、コード書いて動かす気になれない。

それだから、
ある程度のことしか書けない。

私が知らないだけで
もっと、いい方法はあるかもしれないが。

最大公約数も最小公倍数も
素因数分解しないと
求められないと思うです。

どんな整数入力されるかわからず、
1通りの方法でやろうとするとです。

素因数分解するには、
素数の羅列がわかってないといけない。
2, 3, 5, 7, 11, 13, 17, 19
などある程度、配列など
固定で定義してもっとく。

ゆえに、あんまり大きな整数入力されたら、
素因数分解できないから。

沢山、素数をできるだけ、
どこぞで、調べて。
拾ってきて。
配列で定義して。
その中で一番大きい素数
より大きいものが入力されたら。
序盤で、チェックして処理できない仕様にするとか。

それとも、素数の羅列をもとめるところから、やるですか。

素数の羅列があった。
入力されたaについて、
小さい素数から割ってくです。
割ったあまりがゼロになれば、割りきれるから。
その素数を素因数分解にもつです。
%という剰余演算あるでしょ
それで、
a % そのときの素数
がゼロかどうかです。

割りきれたら、
aについて何番目の素数を因数として何個もつかを格納する配列をあらかじめ、
固定の要素数で作るか。
malloc, free
で都度つくるかして。
素数ごとにもつかずをカウントアップするなど。
割れる素数が見つかるたびに
aをその素数で割った数で、
更新するです。

そのようにやれば、
素因数分解でき、その結果をメモリ上で記憶できる。

bも同様。

あとは、

最小公倍数、最大公約数は、
その素因数分解から
求められる。
それらは、
ググれば。
一般的な数学の話だから。
高等な数学いらないし。

たぶん、わかる。

つかれた。

ここまでの話を参考に。

自分で、いろいろやる気力がないとかなら。
二時間でも、三時間でも
考えてデバッグしまくるとか。
はじめから、そんな事やる気力もないなど。

なら、

向いてないから。
プログラミングやめたほうがいいです。

以上です。
    • good
    • 3

で質問はなんですか?

    • good
    • 1

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