javaのプログラミング(連続する整数の和)
大学で出た課題です。
「ある自然数nを入力し、n=○+○+…+○と連続する整数の和で表すプログラミングをつくれ。」というものです。
以下に、私が考えたものを載せます。これだと連続する2つの整数の和では表すことができるのですが、3つ以上の整数の和を表すことができません。どうすればよいでしょうか?
import java.io.*;
public class n {
public static void main(String[] args) {
int n;
BufferedReader rd = new BufferedReader(new InputStreamReader(System.in));
try{
String line;
System.out.print("整数:");
line = rd.readLine();
n = Integer.parseInt(line);
}
catch(IOException e){
System.out.println("入力エラーが発生しました。");
return;
}
catch(NumberFormatException e){
System.out.println("整数を入力してください。");
return;
}
for(int i=1;i<=n;i++){
int k=i+1;
if(i+k==n)
System.out.println(i+"+"+k);
}
}
}
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
javaの質問ですが数学カテなので数学的に考察してみます。
もしnが3の倍数なら、例えばn=12の場合はn=4*3なので、
nは4を真ん中にした3個の数の合計となります。(n=3+4+5)
もしnが5の倍数なら、例えばn=20の場合はn=4*5なので、
nは4を真ん中にした5個の数の合計となります。(n=2+3+4+5+6)
つまり、nが奇数の倍数なら、n=m*(2k+1)とするとき、
nはmを真ん中にした(2k+1)個の数の合計になります。
n=(m-k)+(m-k+1)+・・・+(m-1)+m+(m+1)+(m+2)+・・・+(m+k)
ただし、k≧mのときは(m-k)は負数になりますが、
m>0なので必ず(m-k)と相殺できる正数(k-m)の項が存在するので、
n=(k-m+1)+(k-m+2)+・・・+(m+k)
となります。(項数は2m個)
例.n=90=2*3*3*5 の場合
3の倍数とみたとき、m=30,k=1
n=29+30+31
5の倍数とみたとき、m=18,k=2
n=16+17+18+19+20
9の倍数とみたとき、m=10,k=4
n=6+7+8+9+10+11+12+13+14
15の倍数とみたとき、m=6,k=7
n=2+3+4+5+6+7+8+9+10+11+12+13
45の倍数とみたとき、m=2,k=22
n=21+22+23+24
n=2^mとなる場合は、nを連続する2個以上の整数の和で表すことはできません。
javaのコーディング方法について知りたいなら、プログラミングのカテゴリーで質問してみてください。
No.1
- 回答日時:
エラトステネスの篩を、順次総なめにしているみたいな感じのアルゴリズムですね。
力任せにコーディングする前に分析しましょう。
n : 自然数
m : 整数(マイナス、0もOK) と考えて
連続2整数の和で表す方法
自然数 n が奇数のとき、つまり n=2m+1 => n=m+(m+1)
自然数 n が偶数のとき、つまり n=2m => (不可能)
なぜなら、連続2整数は、かならず奇数、偶数のペアであり、
和は必ず奇数になるから。
連続3整数の和で表す方法
整数 n が3の倍数のとき、つまり n=3m => (m-1) + m + (m+1)
整数 n が3を法として1になるとき、つまり n=3m+1 => (不可能)
整数 n が3を法として2になるとき、つまり n=3m+2 => (不可能)
なぜなら、連続3整数の和は、必ず3の倍数になるから。
(連続3整数の1つは必ず3の倍数、他は3を法として1、2になる
整数であるから。これで分かんないなら、力ずくで3パターン計算
して証明してもよい。)
3m + (3m+1) + (3m+2) = 9m+3 = 3(3m+1)
(3m-1) + 3m + (3m+1) = 9m = 3(3m)
(3m-2) + (3m-1) + 3m = 9m-3 = 3(3m-1)
・・・
連続N整数の和で表す方法
★再帰的呼び出しを使ってはどうでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
外イキはなぜ1回しか出来ないの...
-
連続する番号を引く確率
-
「区分的に連続」と「区分的に...
-
ジャンケン連勝世界記録
-
連続する2整数が互いに素(最大...
-
隔年と毎年の違いを教えてくだ...
-
X2乗+Xの解き方について
-
数学2の問題で、x2024乗をx2乗+...
-
√x log(x+2)の不定積分は部分積...
-
(x+1)3乗と (x2乗+1)(x+1)(...
-
極限を求める
-
10種類のドーナツから3つのド...
-
√32の解き方を教えてください。...
-
y=x-3cosx (0<x<2π)の増減表を...
-
3次元座標から体積を求める参考書
-
関数f(x)の増減の範囲で、 f'(x...
-
数学の問題です。 解き方を教え...
-
m2の出し方を教えてください
-
1+2+3・・・50 の解き方
-
X二乗の解き方。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
外イキはなぜ1回しか出来ないの...
-
隔年と毎年の違いを教えてくだ...
-
「区分的に連続」と「区分的に...
-
連続点灯時間とは
-
ジャンケン連勝世界記録
-
区分的に連続な関数について
-
自動紙送り装置
-
1日あける 一日置き 違いは何で...
-
無理数は連続ですか?
-
エクセルで同じ文字が3連続して...
-
連続する番号を引く確率
-
連続する3つの整数の積が6の倍...
-
内田伏一著 集合と位相 例19.2
-
高校数学の並べ方の問題です。
-
連続と区分的連続は違いますか?
-
連続する2整数が互いに素(最大...
-
数列の問題で 階段の登り方の漸...
-
ε-δ論法による関数の連続性につ...
-
複素関数の連続性
-
実数はなぜ連続なのか?
おすすめ情報