javaで、for文とif文を組み合わせて
1 2 4 5 7 8 10 11 13
と出力されるプログラムの記述方法を教えていただきたいです
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/20 04:26
2019/10/20 04:27
回答4件
0
まずは数列の規則を見極めるところから始めなければなりません。
数多くの候補から慎重に検討した結果、A110118であると推測されます。決してビーティ数列だと実装が面倒そうだという理由ではありません。
Java
1for (int n = 1; n <= 9; n++) { 2 System.out.print((int)Math.floor(n * (Math.sqrt(6) + Math.sqrt(2) + 2) / 4)); 3 System.out.print(" "); 4} 5System.out.println();
すばらしいと言いたいところですが、一つ問題が発覚しました。if
を使っていません。これは致命的なミスです。そこで我々は新たな数列を探し出す事にし、A215099を見つけました。数列の定義は0からですが、それ以外は面倒そうなので1から始まるとしても問題ないでしょう。ます。
Java
1var a = new int[10]; 2a[0] = 0; 3for (int n = 1; n <= 9; n++) { 4 if (n == 1) { 5 a[n] = 1; 6 } else { 7 int k = a[n - 1]; 8 k: for (;;) { 9 k++; 10 int p = k + a[n - 2]; 11 for (int i = 2; i < p; i++) { 12 if (p % i == 0) continue k; 13 } 14 break; 15 } 16 a[n] = k; 17 } 18 System.out.print(a[n]); 19 System.out.print(" "); 20} 21System.out.println();
ちゃんとif
文も使えました。for
が3回、if
が2回と、これを書いている時点のどの回答者の回答よりもふんだんに使っています。**これが正解に違いありません。**ただ、素数判定の所は非常に遅いアルゴリズムになっていますので、もっと速くする方法についてはこれまた真面目にやると面倒なので今後の課題として質問者のために残しておきたいと思います。
【追記】
(空想上の)コメントで「配列を使うのは無駄では無いか?」「10番目以降を無限に(せめてintの限界までに)生成できないのはコードとして間違っている」というご指摘を受けました。
大変申し訳ありません。まったくその通りであり、配列を使う必要性は全くなく、至極無駄でございます。ですが、質問者様が退会してしまったため、私のやる気がぐーんと下がっており、コードを修正する気力が0となっております。質問者様が再度入会し、新たにこの事についてお知りになりたいと質問して下されば、答えようかと考えております。
投稿2019/10/20 05:36
編集2019/10/20 05:47総合スコア21737
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/20 05:39
退会済みユーザー
2019/10/20 05:43
2019/10/20 05:43
2019/10/20 05:47 編集
2019/10/20 05:51
2019/10/20 05:51
2019/10/20 05:57
2019/10/21 05:13
0
大喜利ですよね。
Java
1class Wandbox 2{ 3 public static void main(String[] args) 4 { 5 var items = java.util.stream.IntStream.range(0, 5) 6 .map(i -> i * 3 + 1) 7 .flatMap(i -> java.util.stream.IntStream.range(0, 2).map(j -> j + i)) 8 .toArray(); 9 for (int i: items) { 10 if (i < 14) System.out.printf("%d ", i); 11 } 12 } 13}
出力形式が間違っていたので修正しました。
投稿2019/10/20 04:16
編集2019/10/20 04:23総合スコア28669
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/20 04:20
2019/10/20 04:24
2019/10/20 04:32
2019/10/20 04:38 編集
2019/10/20 04:38
2019/10/20 04:39
退会済みユーザー
2019/10/20 05:06
退会済みユーザー
2019/10/20 05:07
2019/10/20 05:11
2019/10/20 05:14
2019/10/20 05:20
退会済みユーザー
2019/10/20 05:38
2019/10/20 05:41
2019/10/20 05:48
0
「3の倍数は出力しない」というプログラムを求められていることを前提とします。
まずfor文だけで「1〜13の数字を出力する」コードを書いてみてください。
そのあと、if文で「3の倍数の時は数字を出力しない」ように条件をつけてみてください。
記述方法については、ここの回答欄に書ききれないほど詳しく丁寧に解説しているサイトがたくさんありますので、ぜひ検索して参考にしてください。
投稿2019/10/20 04:10
総合スコア1186
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/20 04:13 編集
2019/10/20 04:31
0
いくらでも方法はあると思いますが、端的な回答だと
java
1 2int[] pattern = new int [1 2 4 5 7 8 10 11 13];//半角スペースの間に,(カンマ)入れないとエラーになるのでそこだけ注意 3 4for(int i = 0 ; i < pattern.length ; 1++) 5{ 6 if( i != pattern [i] ) { continue ;} 7 System.out.println( pattern[i] ); 8} 9
ですが、根源的質問として、あなたは「なぜその質問をしようと思ったのでしょうか…」」
その次第です…
「1 2 4 5 7 8 10 11 13」とだけ出力したいだけなら、強引ではありますが、もっと他の解決方法等もあるのと
「1 2 4 5 7 8 10 11 13」に固執した出力が求められる状況が想定できません…
投稿2019/10/20 04:09
編集2019/10/20 04:10総合スコア368
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/20 04:53
2019/10/20 04:56
2019/10/20 04:59
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。