fun succではi + 1を++iとは書けないようです。fun hanbunでは整数の計算なので、15で良いんでしょう。
試しにdef hanbunを結果がFloatにしてみました。i / 2.0では駄目なんですね。i / 2.toFloat()でした。結構厳しい。型にうるさいようです。引数も型が指定されてますので、Int以外のFloatではエラーになるでしょうね。そうなると引数、関数の戻り値に応じて関数を作る。そんなはずは無いでしょうね。同じ名称の関数が山ほど出来てしまいます。
fun succではi + 1を++iとは書けないようです。fun hanbunでは整数の計算なので、15で良いんでしょう。
試しにdef hanbunを結果がFloatにしてみました。i / 2.0では駄目なんですね。i / 2.toFloat()でした。結構厳しい。型にうるさいようです。引数も型が指定されてますので、Int以外のFloatではエラーになるでしょうね。そうなると引数、関数の戻り値に応じて関数を作る。そんなはずは無いでしょうね。同じ名称の関数が山ほど出来てしまいます。
continueやbreakでラベルを使えるのは分かりました。でもこの場合は無くても良いみたいです。if文やfor文は()で囲む、必須なんですかね?あと適宜{}で括った方が分かり易いようです。if文で文が複数ある場合は、多分ですが絶対括らないと駄目だと思います。
7行目、候補を素数で割って割り切れたときは、次の候補に行くわけですが、前は10行目に行っていたので、素数で無いものと素数が同じところをとおっていたのでflagが必要でした。今回は要らなくなりました。
素数を入れるものはListにしました。最初の要素は2です。偶数は素数で無いので、3から初めて次は5を調べます。以下同様に奇数のみ調べます。素数で割りきれないのが素数です。途中で着目している素数の二乗したものが、候補よりも大きくなったときは素数です。例えば、11を調べるときは、2と3、5でわりきれないので素数です。7で調べる必要はありません。素数の時と、割り切れたとき同じところへ行くので、フラグで区分して、次の候補へ行きます。
図か小さくなるので、実行画面は下です。
forもforEachもいろんなバリエーションがあるようです。思いついたら、書けるか調べると、結構書けることも多いようです。(-_-;)
4行目cntのアンダーラインは何の意味でしょうかね?12行目のval nextは{}から抜けるときに削除されるんですかね。同じ変数名では再び定義出来ないでしょうからね。
変数の宣言には9行目と11行目のやり方がありますね。11行目は少し省略して、意味合いを重視してるやり方ですかね。リストは17行目のようにアクセス出来ます。
rubyで言うところの、hashですね。2行目でhashの形式を明言してます。MutableMap<String, Int> = この書き方は全てにおいて共通ですね。
重複が無いように、配列のように確保される。という感じに見えますが、リストのようにインデックスで要素にアクセスすることは出来ない。ではどういう利用価値があるですかね?
前回では、文字の場合は<Char>を付けて、配列やリストを作ってました。<String>に変えてみました。「'」が「"」に変えないと駄目です。例えば"x"のように一文字でも大丈夫です。多分ですが、<Char>の場合は、一文字出ないと駄目かもしれません。日本語とかはどうですかね。文字列なら大丈夫そうなので、<Char>は使わないで<String>を使えば、出来そうに思います。
二行目のようにMutableList<Int> = mutableListOf<Int>となっていれば、Listも変更可能と言うことです。なんか面倒くさい?
kotlinでは確かにIntとListが違うように説明、違う項目で説明されてます。Listはイミュータブル(変更できない)と説明されてます。配列でもvalなら変更できないでしょう。一度は代入は出来ますが。
rubyでは配列だけで良いようにも思えるんですが、どこか違いがあるんでしょうかね。(-_-;)