プログラ生活

プログラム初学者のためのポイントを書いていこうと思います。たまに脇道それた記事もありますが、息抜きだとおもって気長にお付き合いください。

【数学】素数の話(Python付) -3-

www.pon-x.jp

www.pon-x.jp

前回まで素数の必要性を話していきましたが、そうしたらどうやって素数ってみつけていくのっていう話です。

素数とは、1より大きい自然数で、さらに約数がその数自身と1の2つしかないという数のことでしたよね。
では、素数を探す手順を紹介します。

2以外は奇数だけを考える。

1は約数が1つしかないので、2以上を考えるのですが、偶数は絶対に2を約数にもつので、2以外は奇数だけを考えます。

奇数の約数は奇数しかない

奇数の約数に偶数をもつことはないので、奇数の約数が存在するかを確認していけばよいのです。

その数の半分の数まで探せばよい。

例えば、69は素数かどうかを考えるとき、1と67以外に約数を持つかということを考えます。
小さい順から考えると、 $69 \div 2 = 34 \mbox{余り1}$ ・・・ 2は約数でない
$69 \div 3 = 23$ ・・・ 3は約数である。



ということがわかります。
ここで、3が約数ということであれば、23も約数であるということがわかります。
つまり69の半数までかぞえれば、残りの半数に約数が存在するか否かは断定できるのです。

コードにしてみる

def sosu(num):
    
    if num < 2:
        # 2以上の自然数対象
        return False
    
    elif num == 2:
        # 2は素数
        return True

    elif num % 2 == 0:
        # 2以外の偶数は素数でない
        return False

    else:
        # 奇数は1とその数と自身以外に約数があれば約数でない
        for i in range(3, num // 2, 2):
            if num % i == 0:
                return False
        else:
            return True



# 100未満の素数を探索する
for i in range(100):
    if sosu(i):
        print(i)

->
2   
3   
5   
7   
11   
13   
17   
19   
23   
29   
31   
37   
41   
43   
47   
53   
59   
61   
67   
71   
73   
79   
83   
89   
97   

→ 

【数学】素数の話 -2-

前回の続き

www.pon-x.jp

素数って何のためにあるの!?という話です。

例えば、整数について素数のかけ算に分解することを素因数分解といいます。

例 . $28 = 2 \times 2 \times 7 $

こんな感じです。

これをするととてもいいことがあるのです。 それは、2つの数において、最小公倍数最大公約数を求めることができるのです!!






それがなんなのさ・・・。と思う方!!これってとても大事なことなのですよ!!

  • 最小公倍数は通分
  • 最大公約数は約分

に使われているのです。
さすがに分数の話になるとその意味が分かりますよね!!

次回は、素数のアルゴリズムを考えてみます!!

【数学】素数の話 -1-

素数とは、1より大きい自然数で、さらに約数がその数自身と1の2つしかないという数のことです。

・・・どうでしょうか。ことばで書くと難しいですね。
ですので具体例をだしてみましょう。




2の約数は1と2の2つですから、2は素数です。
3の約数は1と3の2つですから、3は素数です。
4の約数は1と2と4の3つですから、3は素数ではありません。
5の約数は1と5の2つですから、5は素数です。
6の約数は1と2と3と6の4つですから、6は素数ではありません。
7の約数は1と7の2つですから、7は素数です。
8の約数は1と2と4と8の4つですから、8は素数ではありません。
9の約数は1と3と9の3つですから、9は素数ではありません。





といったように、約数がいくつあるかということを考えます。
次に、素数を小さい順に並べていきます。

2,3,5,7,11,13,17,19,23,29,31・・・
まだまだ素数は続き、無限にありますが、ここら辺の数まで調べられれば大抵どうにかなると思います。



また、これをみてわかるように、素数は2以外はすべて奇数です。
素数かどうかを調べるときは、まずその数が偶数か奇数かでまず判断すると早いとおもいますよ。





いかがでしたか。素数のあり方について理解ができたでしょうか。

それで結局、素数がってなに??と思ったことでしょう。
どのような使われ方をするのかということが、次に大切なことですね。
それはまた次回に触れようと思います。

【統計】今年は雨が多かった・・・。

東京に住んでいて、例年になく7月の雨量が多かったと感じる。
庭で育てている植物にほぼ水をあげなくてもよい1か月だった。

そして、地方では熊本や山形など豪雨災害にもまわれた方もいた。
はやい復興がのぞまれるとともに、なにかできることがあれば支援していきたいと思う。

さて、近年豪雨災害が多くなったと感じるとともに今回の災害は例外的な雨量であったのか、人吉の雨量を見てみたいと思う。

気象庁
過去の気象データ・ダウンロードより
http://www.data.jma.go.jp/gmd/risk/obsdl/

f:id:hanabusa-snow:20201114091826p:plain

過去40年分の7月の降水量のデータのみを抽出しているのだが、月合計の雨量もさることながら、日最大雨量が大きいのが災害をもたらした要因として大きいだろう。
月合計も日最大もある程度の相関関係がみられるわけであるが、2006年も今年と似たような傾向であったことがわかる。調べてみると、やはりこのときも豪雨被害は大きかったようだ。
また、1983年やも九州南部では豪富被害があったようだ。グラフから見るに人吉では月降水量も高いが傾向線に対しては低い。それより日降水量が高いことがわかる。このような今年に比べて極端な年も過去にはあったことがわかる。

毎年とまで言わなくとも、10数年に1度ペースで起こっている水害について、さまざまな都市での対策について、他人事ではなく自身の住んでいる地域においても真剣に考えていく必要があるだろう。

【統計】眠くなる時間

f:id:hanabusa-snow:20201114084713p:plain

私が統計を教えている受講者に、このグラフは何だと思うか当てさせてみた。

いろいろ意見があがったが、記憶に残るコメントで 「眠くなる時間」
というのがあった。




確かに昼ごはんを食べた後はとても眠い!!
良い考察だ。
しかし、それ以外の時間帯はどういう解釈だ!?




やはり、可視化というのはグラフだけではすまないものだ。



<正解>
モバイル端末のトラフィック推移




参照元
DATA●GO.JP
情報通信白書_令和元年版
移動通信トラヒックの曜日別変化

【Android Studio】Android StudioでGithubアカウントを変更する

Android StudioでGithubアカウントを変更するのにはまった。ちなみにWindows。

すっごい初歩ではまってはずかしいながら、二度と忘れないように備忘録です。

ステップ1
File → Settings

f:id:hanabusa-snow:20201112164219p:plain




ステップ2
Version Control → 削除したいユーザーを選択 → 「ー」

f:id:hanabusa-snow:20201112164601p:plain




ステップ3
Version Control → 「+」→ 「新しいユーザー設定」

f:id:hanabusa-snow:20201112164605p:plain




これでOK