2016年12月16日金曜日

Pythonはじめました

どうも、双六です('_')ノ 最近サークル(京音)内で突然のプログラミングブームが起きてるので、ぼくもその流れに乗って始めてみました~。音ゲー関係ねえ('_')

今回はPython3というプログラミング言語を用いた素数判定プログラムと、素因数分解のプログラムを自分なりに作ったのでそれについて話そうと思います(本当に始めたばっかりだから、一応テストはしたけど何か間違いがあっても許してね('_')💦)。

まずは素数判定プログラムについて。

nを素数としたとき、素数はそれ自身と1以外の約数を持たない、つまり2以上n-1以下のすべての整数で割り切ることができないという性質のみを用いたソースコードです。nが2の時は例外なのでif文で分岐を作っています。文字列として用いてるpとcは、pはprime number(素数)のp、cはcomposite number(合成数)のcからとりました。

たとえば、3という値を入力すると、

3は素数です

と表示され、
8という値を入力すると、2で割り切れるので、

8は素数ではありません

と表示される感じです。

nが1のときとか0のときとかはおかしくなるとか、そもそも√n以下まで調べればよくない?とか2で割り切れる数字は4でも自明に割り切れるからそこもう少し頑張って(素数かどうか調べるにはその数未満の素数で割り切れるかどうか調べればよくない?)とかいろいろ思うところはあると思いますが、初心者なんで許してください('_')💦

次に素因数分解のプログラムについて。

これはさっきの素数判定プログラムを少し改良して、入力された値が素数ではない場合、素因数分解した結果を表示してくれるというものです。
ざっくりした説明をすると、入力された値が2からn-1のある数xで割り切れたら、その割った後の値n / xに対して また2から順番に割り切れるかを試す、というのを繰り返す感じです。また、1回割り切れた時点でその値は素数ではないと判別されるようになっています(説明下手ですいません💦)。
たとえば、さっきと同じように3という値を入力すると、

3は素数です

と表示されますが、
5000000000000000という値を入力すると、

5000000000000000 = 2 × 2 × 2 × 2 × 2 × 2 × 2 × 2 × 2 × 2 × 2 × 2 × 2 × 2 × 2 × 5 × 5 × 5 × 5 × 5 × 5 × 5 × 5 × 5 × 5 × 5 × 5 × 5 × 5 × 5 × 5

といったように表示されます。

累乗(たとえば8 = 2 × 2 × 2ではなく8 = 2^3と表示させるなど)はまだ地力不足で書き方が思いつかなかったので、今回はやりませんでした。ちょっと難しそうだ~('_')
割と簡単そうに書いてしまいましたが、書き方の方針を考えるのに時間がかかったのと(特に2つ目)、まだあまり慣れてないせいで、正しく書いたつもりでもしょっちゅうエラーが起きたので案外大変でした('_')💦 まだまだ地力不足ですね、精進します💪('_')


あと先週AtCoderというプログラミングのコンテストに初めて参加してみました。毎週土曜か日曜に行われていて(多分)、与えられた4つの問題を解く形式で、簡単なコースとやや難しめのコース2つがあるので、初心者にもやさしいです。ぼくは今回は簡単なほうのコースで参加してきました~

 結果はこんな感じ。


画像が小さくなってて申し訳ないです('_')💦

初参加にしては4問中2問とけたのでなかなか健闘した気がします。案外面白いので次回も参加しようかなと思っています。レーティングがつくっぽいんで積極的に参加していきたいですね。うおお


そういえばボルテ新作の稼働日が来週で冬コミが2週間後なんですよね('_')💦 年末年始は思ったより忙しくなりそうですが頑張ります💪('_') 地力上げもするぞ!


今回はここまで。 ではでは~('_')ノノ

0 件のコメント:

コメントを投稿