• 締切済み

初心者ですが、今javaで簡単な課題を出されたのですが、どうやって導き出せばいいのかわかりません。教えてください。

1)2520 は 1 から 10 の数字の全ての整数で割り切れる数字であり、そのような数字の中では最小の値である。  では、1 から 20 までの整数全てで割り切れる数字の中で最小の値はいくらになるか。 2)最初の10個の自然数について、その和の二乗と、二乗数の和は以下の通り。  1^(2) + 2^(2) + ... + 10^(2) = 385  (1 + 2 + ... + 10)^(2) = 3025  これらの数の差は 3025 - 385 = 2640 となる。  同様にして、最初の100個の自然数について和の二乗と二乗の和の差を求めよ。 3)ピタゴラスの三つ組(ピタゴラスの定理を満たす整数)とはa<b<cで  a^(2) + b^(2) = c^(2)を満たす数の組である.  例えば, 3^(2) + 4^(2) = 9 + 16 = 25 = 5^(2)である.  a + b + c = 1000となるピタゴラスの三つ組が一つだけ存在する. このa,b,cの積を計算しなさい. の3問になります。よろしくお願いします。

  • Java
  • 回答数3
  • ありがとう数0

みんなの回答

  • HarukaV49
  • ベストアンサー率53% (48/89)
回答No.3

Java言語を勉強する醍醐味はオブジェクト指向設計の考え方を 勉強して感動するところにあります。 こんな古典的なお粗末なサンプルプログラムを書かされていたら プログラミングが嫌いになりそうですね。お気の毒です。 こんなプログラムは、下記のサンプルをそのままコピペして 提出しまいましょう。 頭を使いべきは、オブジェクト指向設計です。 ちなみに、(1)なんて、  整数1から20までの最小公倍数を求めよ と書けば良い所を、長々と書いて出題センスを疑います。 (3)だったら、  a,b,c を自然数とするとき、a^2+b^2=c^2を満たす、a,b,c の  組をピタゴラス数と呼ぶ。a+b+c = 1000 を満たすピタゴラス数を求めよ。 って、書いて欲しいところです。 import java.math.BigInteger; /** * ある値までの自然数の最小公倍数,和の2乗,2乗和のおよび * 和がある値のピタゴラス数を求めるためのクラスです。 */ public class NaturalNumberSample { /** * 任意個数の数値の最小公倍数を求めます。 * @param numbers 数値配列 * @return 最小公倍数 */ public static long getLeastCommonMultiple( long[] numbers ) { long lcm = 1; for( long a : numbers ) { lcm = getLeastCommonMultiple( a, lcm ); } return lcm; } /** * 2つの整数の最小公倍数を求めます。 * @param a 1つ目の整数 * @param b 2つ目の整数 * @return 最小公倍数 */ public static long getLeastCommonMultiple( long a, long b ) { return a * b / getGreatestCommonDivisor( a, b ); } /** * 2つの整数の最大公約数を求めます。 * @param a 1つ目の整数 * @param b 2つ目の整数 * @return 最大公約数 */ public static long getGreatestCommonDivisor( long a, long b ) { return new BigInteger(a+"").gcd(new BigInteger(b+"")).longValue(); } /** * 引数を最大値とする自然数配列を生成します。 * @param max 最大値 * @return 自然数配列 */ private static long[] getArray( int max ) { long[] array = new long[max]; for(int i=0; i<max; i++) { array[i] = i+1; } return array; } /** * 自然数1~maxまでの整数の和を求めます。 * @param max 最大の整数 * @return 和 */ public static long getSum( int max ) { return ( 1 + max ) * max / 2; } /** * 自然数1~maxまでの整数の2乗和を求めます。 * @param max 最大の整数 * @return 2乗和 */ public static long getSquareSum( int max ) { return max * ( max + 1 ) * ( 2 * max + 1 ) / 6; } /** * 合計値がsumとなるピタゴラス数を求めます。 * 複数存在する場合は最初のひとつを返します。 * @param sum 合計値 * @return ピタゴラス数配列 */ public static int[] getPythagoreanNumber(int sum ) { for(int a = 1, n=sum/3; a<n; a++) { for(int b=a+1; b<sum; b++) { int c = sum - b - a; if( c < b ) continue; if( a * a + b * b == c * c ) return new int[]{a,b,c}; } } return null; } /** * 自然数20までの最小公倍数,和の2乗と2乗和の差および * 和が1000のピタゴラス数を求めるサンプルプログラムです。 * @param args 無視されます */ public static void main(String[] args) { int a = 20; System.out.printf( "自然数 1~%d の最小公倍数は %d です\n", a, getLeastCommonMultiple( getArray(a) ) ); System.out.printf( "自然数 %d までの和の2乗と2乗和の差は %d です\n", a, (long)Math.pow(getSum(a), 2) - getSquareSum(a) ); int b = 1000; int[] pn = getPythagoreanNumber( b ); if( pn == null ) { System.out.printf( "合計が %d となるピタゴラス数は存在しません\n", b ); } else { System.out.printf( "合計が %d となるピタゴラス数は %d, %d, %d で、その積は %d です\n", b, pn[0], pn[1], pn[2], pn[0]*pn[1]*pn[2] ); } } }

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

1) 「最小公倍数」はご存じ? 2) 公式をそのまま書くだけ. 3) 全部足して 1000 なんだから力ずくでやってもたかが知れてる. 一口に「初心者」と言ってもいろんなレベルがあるんだから, それぞれに対し「どこまで理解してどこまでは書けるけどここが分からない」と書いてほしいなぁ.

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

1)は 2520を素因数分解してみます すると 2^(3) x 3^(2) x 5 x 7 に分解できます 次に 1から10までを素因数分解します 1 2 3 4 ... 2x2 5 6 ... 3x2 7 8 ... 2x2x2 9 ... 3x3 10.... 2x5 となります 1から順に積を考えます 1 ... 1 2 ... 1 x 2 3 ... 1 x 2 x 3 ココで 4は 2x2ですが すでに2は1つあるので もうひとつ2があればよさそうです 4 ... 1 x 2 x 3 x 2 5 ... 1 x 2 x 3 x 2 x 5 7 ... 1 x 2 x 3 x 2 x 5 x 7 4の場合と同じようにココで2があればいい 8 ... 1 x 2 x 3 x 2 x 5 x 7 x 2 同様に3があればいい 9 ... 1 x 2 x 3 x 2 x 5 x 7 x 2 x 3 10は2x5だが この組み合わせは存在するので追加しない 10 ...1 x 2 x 3 x 2 x 5 x 7 x 2 x 3 整理すると 1x2^(3)x3^(2)x5x7となる 同じことを1から20についてプログラムすることになりそうです 素数はそのまま因数として使うことになります 倍数は今まで出てきた因数の組み合わせで表現できるかをチェック 出来なければ必要な因数を追加 ... 4における2、8における2、9における3など

関連するQ&A

  • 数学で次の問題の解答方法を教えて下さい。

    3つの正の整数があり、小さい方から順にA,B,Cとします。 これらの中からあらゆる2つの整数の組を選んで和と差(大きい方の数から小さい数を引いた差) を計算すると次の通りになりました。 2,25,26,27,51,53 これについて次の問いに答えなさい。 (1)A+Cはいくらですか? (2)A,B,Cの値をそれぞれ求めなさい。

  • 整数について。

    (1)最大公約数と最小公倍数の和が51であるa,b(a <b)の組は、?組あり、最大のa の値は、?である。 (2)和が546で、最小公倍数が1512である2つの正の整数を求めよ。 この2問にご教授願いたいです。すみません。

  • 数学の問題がわからなくて困っています

    数学の得意な方 暇な方はご協力ください。 (1)2次方程式x²+ax+3a=0の解の1つがx=-2であるとき、ほかの解を求めよ (2)2次方程式2x²+ax+b=0の解がx=-3、5であるとき、a,bの値を求めよ。 (3)aを正の整数とする。xの2次方程式。 x²-2ax+a²-15=0の解の1つがx=3のときaの値とほかの解を求めよ。 (4)大小2つの数がある。その差は3で、それぞれの平方の和は89になる。この2数を求めよ (5)ある正の数xに3を加えて2乗するところを誤って3を加えて2倍したため、答えは48小さくなった。xの値を求めよ。 (6)連続する5つの整数がある。最大の数と最小の数の積は5つの整数の和より10だけ大きい。5つの整数を求めよ

  • 高校入試問題

    高校入試問題 (1) √18(a二乗+b二乗)が自然数となるような自然数a,bの値の組を3組求めなさい。 (2) √18(a二乗+b二乗)が30以下の自然数となる時、自然数a,bの値は何組あるか求めなさい。 この二つの問題の、解き方を教えてください。 受験までもう少しですがまったくわかりません。

  • 平方根 応用問題がわからず困っています

    次の2つの平方根についての問題がわからず困っています √40a の値が2桁の自然数になるような、自然数aの値をすべて求めなさい。 連続する3つの自然数a,b,cがある。√2+3+4 の値は、√9=3のように整数になるが、このように、√a+b+c の値が整数となるa,b,cの組の求め方を書きなさい。 解き方(考え方)がわかるように、途中式や説明もいただければ、幸いです。 よろしくお願い致します。

  • 数論が専門の方へ、ピタゴラス数からピタゴラス多項式、ピタゴラス行列を考えると

    正の整数の組 a,b,c がピタゴラスの定理 a^2 + b^2 = c^2 を満たすとき、組 (a,b,c) のことをピタゴラス数という。 原始ピタゴラス数は、互いに素な正の整数 m,n に対し、一方が偶数の時 a = |m^2 - n^2| b = 2mn c = m^2 + n^2 により、得られることが知られている。 また、(3,4,5)にある行列を掛けていくことによっても生み出されることも聞きました。 上の話で、整数のところを、(整数係数もしくは複素数係数の)多項式、(整数成分もしくは複素数成分の)行列と変化させるとどういった理論が知られているのでしょうか? 例えば、いわゆる原始ピタゴラス多項式と呼ばれるものは、 互いに素な多項式 f(x),g(x) に対し、 a = |f(x)^2 - g(x)^2| b = 2f(x)g(x) c = f(x)^2 + g(x)^2 と表されたりするのでしょうか?

  • 初級公務員・数的推理の問題(N進法)です。

    初級公務員・数的推理の問題(N進法)です。 Q.自然数Nを9進法で表すとabc(9)、7進法で表すとcba(7)となる。この自然数Nを10進法で表すと、各位の数字の和はいくつか? (答え・14) 解説によれば、 abc(9)=81+9b+c cba(7)49c+7b+aより 81+9b+c=49c+7b+a 80a+2b=48c 40a+b=24c ∴b=24c-40a=8(3c-5a) a,cは1から6の自然数、bは0から6の整数であることから、上式を満たすa,b,cの値はa=3,b=0,c=5のみ (計算省略) ・・・N=248と決まる。各位の数の和は14となる。 とあるのですが、「a,cは1から6の自然数、bは0から6の整数」とあるのはなぜでしょうか? これがどこから出てきたのかわかりません。 よろしくお願いします。失礼ながら、時間がないので、失礼ながらお礼はポイントのみとさせていだだきます。

  • 数学の素因数分解です。

    「a,b,cが正の整数であるとき、24a=90b=cの2乗を満たす、最小のcの値をもとめよ。」という問題なのですが、まったくわからないのでよろしくお願いします。

  • 数学の問題

    「a,bが正の整数のとき、aの2乗=bの2乗+49が成り立つようなaとbの値を書きなさい。解き方も書きなさい。」 という問題のとき方がわかりません。 地道に計算して答えはわかったのですが、なぜそうなるのか理解ができません。 教科書に「ピタゴラスの数」みたいのがあってそれにはあてはまるのですが、まだそこは習っていないところで、式の展開とか因数分解の単元で出てきた問題です。 どなたかお分かりでしたら、ご協力宜しくお願いします。

  • 自分の解き方の何が悪いかわからない…

    こういう問題がありました 「2つの自然数a,b(a<b)について、aとbの最大公約数は6 最小公倍数は216である。このような(a,b)の組は何組あるか」 自分は 二つの整数とその二つの整数の最小公倍数、最大公約数の定理より a×b=6×216 がなりたつ  ここで右辺を素数の積の形に直すと a×b=2^4×3^4 よって左辺では2を4個、3を4個供給しなければいけないので 考えられる組み合わせは a             b     2^0×3^0       2^4×3^4 :              : :              : :               : 2^4×3^4       2^0×3^0 の25個 ここからa<bの条件に合わないものを除き 答えは11組 と考えたのですが、正解は2組でした ぜんぜん違いました… どこが間違っているのでしょうか おしえてください