【東京通信大学】初級プログラミング演習Ⅰ:第4回~第5回

初級プログラミング演習1の第4回~第5回の備忘録です!

第4回

4共通 素因数の個数

まず、素数がわからないと駄目ですね…
2,3,5,7,11…
と、その数以外で割れない数のことですね。

4は、2で割れる
9は、3で割れる
ので、素数では有りません。

1も素数の定義に入りません。
1が素数だと、他の数がすべて1で割れてしまうので…
※問題文にもありますね。

ただし、本課題には裏課題が仕組まれており、効率の良い計算を行うことが求められています。
効率的なアルゴリズム
https://algo-logic.info/is-prime/
を参考にどぞ!

標準入力からの数字で、素数を求める時に自分自身が素数の場合計算量が多くなってしまい、実行時間エラーになります。
数学的に、他の素数が含まれている場合、√n以内に素数があることがわかっておりますので、こういった部分を使い計算量を短縮する必要があります。

まぁ、共通問題なので他の人のを参考にすればよろしいかと。

4-1選択 fizzbuzz

おなじみFizzBuzz問題です。
FizzBuss C言語


いくつかの数字が取得できるので、

  • fizz:3で割り切れる
  • buzz:5で割り切れる
  • fizzbuzz:3でも5でも割り切れる

の数を数えるプログラムですね。

ここで注意点は、3でも5でも割り切れる数はについては、fizzにもbuzzにもカウントしないということが、今回のプログラムになります。
※試してませんが、15で割れる、3で割れる、5で割れる…ということでもよいのかもしれません。

みたいな感じかな?

4-2選択 最長の奇数区間

2の選択の区間の問題の奇数番ですね。

のような場合、
-11 7 9
2
1 3 3
6
6
7 7 7 7 7

になるので、最後の「7 7 7 7 7」と奇数が5個並んでいるので5と表示したいプログラムですね。

奇数?

2で割って、余りが0だったら偶数。それ以外は、奇数ですね。

それ以外は奇数。そんな感じです。

第5回

5共通 数値表現の値の総計

あー説明が難しいですね…

考え方
12 + (-34) + 0 + 25
=3

2019 + (-4) + (-10) + 12 + 0 + 0
=2017
みたいな感じです。

先頭から文字をとっていくのが良いのか、一番最後から文字をとっていくのが良いのか…

5-2選択 英字並び・数字並びの出現回数

これは、初級プログラミング1で出てきた教授のプログラムについて、コメントをつけるだけですね
※英字部分だけを数える。

の12この英字並びを数えるプログラムですね。

まぁ、プログラムの元ネタは初級プログラミングで出てるので問題ないでしょう。英字(isalpha)以外の文字から、英字を読み込んだタイミングで+1してるだけですね。

5-2選択 英字並び・数字並びの出現回数

こちらも、初級プログラミング1で出てきた教授のプログラムについて、コメントをつけるだけですね。
※英字部分に追加して、さらに数字部分を数える。

12個の英字並び2個の数字並びを数えるプログラムですね。
まぁ、プログラムの元ネタは初級プログラミングで出てるので問題ないでしょう。

コメントを残す

メールアドレスが公開されることはありません。