- 締切済み
Java 最大公約数 gcd
初心者です。 前にも桁数調整などあらかじめjavaに搭載されているパッケージ(メソッド?)の使い方を質問させていただきましたが、 今度は最大公約数(gcd?)の使い方がわかりません。 拡大係数行列からガウスの消去法を実行するプログラムを書いています。 毎度毎度質問するのもいけないと思い、 なるべく自力でやりたいので参照となるHPとそのHPの見方を教えてほしいです。調べてもわかりませんでした。 プログラムにgcdをつけくわえた例、 その他の実際にHP参照してメソッド(パッケージ?)の使い方の具体的な例、 などつけてくれるとありがたいです。
- kamema
- お礼率61% (8/13)
- Java
- 回答数2
- ありがとう数3
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- luckymako
- ベストアンサー率55% (29/52)
No1.の方の回答の BigInteger は多倍長精度の整数を扱うクラスで 対になる Small~ はありません。 以下のクラス、メソッドを使ってみてください。 行頭の全角スペースは半角スペース等に置換してください。 *プログラム public class GCD_LCM { public static int gcd(int m, int n){ if(n == 0) return m; else return gcd(n, m % n); } public static int lcm(int m, int n){ return m * n / gcd(m, n); } public static void main(String[] args) { System.out.println(gcd(12, 32)); System.out.println(lcm(12, 32)); } } *結果 4 96
- tom11
- ベストアンサー率53% (134/251)
こんにちは、 最大公約数の使い方って、以下のようなことですかな BigInteger n1 = new BigInteger("50"); BigInteger n2 = new BigInteger("75"); BigInteger an = new BigInteger("0"); an=n1.gcd(n2); System.out.println(an); 結果は、25になります。
関連するQ&A
- Excel 2002 COMBIN関数とGCD関数の組み合わせでおかしな値になる
Excel 2002を使用しています。 COMBIN関数(組み合わせ)とGCD関数(最大公約数)を組み合わせてつかうと、時々異常な値が表示されて困っています。 いつもではないところがとくに困りものです。 例1: GCD(COMBIN(17,9),COMBIN(15,7)) 例1のとおりにセルに入力すると2と表示されます。(本来は715が表示されるはず) こればGDC関数の中のCOMBIN関数を他のセルに入れ、そこを参照するようにしてもかわりません。 例2:GDC(24310,6435) 例2のように入力すると715が表示されるのでCOMBINが異常なのかもしれませんが、COMBIN(17,9) と COMBIN(15,7) をそれぞれ単独で表示させると ちゃんと 24310 と 6435 が 表示されます。 この現象(バグ?)をどうにか回避する方法をご存知のかたはいらっしゃるでしょうか? 他のバージョンのExcelでもそうなるのかどうかは確認できていません。
- ベストアンサー
- オフィス系ソフト
- Java 課題について質問
今日プログラミングの授業で、下記のような課題が出されました。 課題1 1-1 FractionWithSimplify2クラスを,次のように改良した サブクラス(クラス名はFractionWithSimplify4とする)を作成して下さい。 なお、改良にあたってはsuperを使うこと。 ※ 補足説明:FractionWithSimplify2 を改良するには, FractionWithSimplify2を "継承する" FractionWithSimplify4 を作成して下さい.つまり,作成する FractionWithSimplify4 クラスは,FractionWithSimplify2 の子クラスになります. ・改良点1:コンストラクタの改良 FractionWithSimplify2クラスのコンストラクタをそのまま呼び出す。 ・改良点2:outメソッドの追加 分数の値を表示するメソッドを追加。 ・改良点3:simplifyメソッドの改良 約分前の値と約分後の値を表示するようにsimplifyメソッドを改良。値の表示にはoutメソッドを用いること。 例) FractionWithSimplify4 f = new FractionWithSimplify(2,8); を実行すると、画面に 約分前の値=2/8 約分後の値=1/4 と表示される。 ヒント:上記改良点1~3を同時に実現したFractionWithSimplify4クラスのプログラムリスト(FractionWithSimplify4だけで良い)を書いて下さい。 ・課題2 1-2 1-1で作成したFractionWithSimplify4クラスの動作が正しいことを確認するプログラムを作成し、作成したプログラムのリストを書いて下さい。 課題3 1-2のプログラムの結果を書いて下さい。 一応、 class FractionWithSimplify4 extends FractionWithSimplify2{ FractionWithSimplify4() { bunsi = 0; bunbo = 1; this.simplify(); } FractionWithSimplify4(int n) { bunsi = n; bunbo = 1; this.simplify(); } FractionWithSimplify4(int n, int d) { bunsi = n; bunbo = d; this.simplify(); } void simplify() { int gcd; int abs_n, abs_d; abs_n = StrictMath.abs(this.bunsi); abs_d = StrictMath.abs(this.bunbo); if (abs_d < abs_n) { gcd = abs_n; } else { gcd = abs_d; } do { if (gcd <= 1) return; gcd--; } while ((this.bunbo % gcd !=0) || (this.bunsi % gcd !=0)); this.bunbo /= gcd; this.bunsi /= gcd; if (this.bunbo < 0) { this.bunbo = this.bunbo * -1; this.bunsi = this.bunsi * -1; } } Fraction add(int num) { this.bunsi += this.bunbo * num; this.simplify(); return this; } FractionWithSimplify4 add(FractionWithSimplify4 f) { this.bunsi = this.bunsi * f.bunbo + this.bunbo * f.bunsi; this.bunbo *= f.bunbo; this.simplify(); return this; } } 課題1のFractionWithSimplify2クラスはここまではやったのですけど、よく分かりません。あと課題2がよく分からないのです。 どうか課題1~3の回答をよろしくお願いします。
- 締切済み
- その他(学問・教育)
- java 直列化
javaの勉強を始めて4ヶ月になります。 それまでは、プログラミングの経験が皆無に等しいレベルです。出来れば下記の内容について解りやすく教えていただければ有難いです。 プログラム public static Category getCategory()throws・・・ String className="パッケージ名.category.class"; Class categoryClass=Class.forName(className); return (Categroy).categoryClass.newInstanse(); 質問1.上記のプログラムでインスタンス化が行えるのですか?→Category 参照変数 = new Category(); と同じ意味ですか? 質問2.もし同じ意味なら、なぜこのように周りくどいことをするのですか? 質問3.forName(),newInstance()メソッドをAPIで調べるとSerializeインターフェイスというキーワードが出できます。Serializeインターフェイスを調べると、長々と次数十項目にも及ぶ説明がされています。この説明を読んでも理解が出来ません。完結に直列化とはどういう意味か教えて頂ければ有難いです。 以上よろしくお願い致します。
- 締切済み
- Java
- 最大公約数を求めたい!
二つの数字の最大公約数を求めたいのですがどうしたらいいのかわからず困っています…。プログラムに関しては初心者なのでどなたか分かりやすく教えてもらえませんか?? <さらにもし出来る方がおられたら…>------------------------------------ 実は最終的にはある数(a(素数))があって、そのaと”たがいに素”である数(b)をプログラムで求めたいんです…。 ある本によると適当な二つの素数p、qがあるとしてこのふたつの積(つまりp*q)をmとします。また、(p-1)(q-1)=aとすると ”gcd(b,a)≡1(mod m)” という式を満たすんだそうです…。 ※この中にでてくる値で実際に分からないのは"b"のみです。 ※ここで書いているgcd(b,a)というのはaとbの最大公約数のことです。 --------------------------------------------------------------------- かなり難しいのでこの質問の回答をいただくと本当に助かります。 よろしくお願いしますm(_ _)m
- ベストアンサー
- Visual Basic
- 2^91-1と2^65-1の最大公約数
2^91-1と2^65-1の最大公約数を求めるにはどうすればいいのですか? これほど大きな値だと共通の素数で割ることもユークリッドの互除法も使えそうにありません。 ちなみにコンピュータに解いてもらったら GCD(2^91-1,2^65-1)=8191 でした。
- ベストアンサー
- 数学・算数
お礼
回答ありがとうございます。 申し訳ないんですが、最大公約数ではなくて、 最小公倍数でした。本当に申し訳ございません。 愚問ですがSmallIntegerを使えばいいですかね?? import java.Math.*; もいりますよね?? 回答お願いします。