SASで素数判定

SASの勉強を始めて3ヶ月弱経った。まだまだ使い慣れてはいないが、日々色々なコードを書いている。


そもそもSASとは、SAS Institute社が開発した統計解析・データ分析のために使われるソフトウェアです。そのソフトウェアで使われる言語を直接指すこともあります。
よくSAS言語の比較対象としてR言語などが挙げられますが、SASを使い始めて3ヶ月の私は、「SASはエラーメッセージが分かりやすくて良いな〜〜」って思ってます(小並感)。

SASの詳細は↓
ja.wikipedia.org


本題に入ります。SAS素数判定やってみたっていう話です。
最近、いつものように死んだ顔でYouTubeを意味もなくスクロールしていたら、3Blue1BrownJapanさんの「素数の螺旋」という動画を見つけました。
youtu.be


数学はあまり得意ではない自称理系の私にとって非常に興味深い内容で、釘付けになって拝見しました。「素数ってすげぇ〜〜」ってなりました(小並感)。
そこで、最近学び始めたSASを使って素数判定できたら面白そうという考えが何故か浮かんだので、心の赴くままに素数判定のコードを書いてみました。コード自体はとてもシンプルです。

data sosu(keep=i);
  do i = 1 to 10000;
    do j = 2 to i;
      if (j ^= i) and (mod(i, j) = 0) then leave;
      if j = i then output;
    end;
  end;
run;

このプログラムでは、1から10000までの数の中で素数のものだけを変数iとしてアウトプットしています。
まず、変数iを1から10000までの範囲でループさせます。
次に、変数jを2から i までの範囲でループさせています。変数jは割る数を表しています。
ここで、素数とは1とその数自身以外に約数をもたない数であるので、他の自然数で割り切れちゃったら素数ではないということになります。
コードの4行目は、「その数以外の自然数で割り切れたら内側のループを抜ける」ということを意味しています。
もし4行目でループを抜けなかったら、それはつまり「1とその数以外の自然数で割り切れなかった」ということなので、その数を素数として出力します。
これがこのコードの流れです。


【あとがき】
今回は2枚目の記事というということで、SASを使った素数判定という題材で書きました。
現在進行形で勉強している言語ということもあり、アウトプットも兼ねてブログ形式で発信したいなと思っていたので、まずはその第一歩を踏み出せたので良かったです。
ブログもSASもまだまだ初心者なので、色々拙いところがあるかと思いますが、今後もネタを発見したら書いていこうと思います。

煙草が居た過去

お題「禁煙成功の体験談」

一記事目で煙草に触れるとは思ってもみなかった。

 

禁煙を開始して、かれこれ三ヶ月ほど経過した。あんなに好きだったピースとホープ、そして手巻きのドミンゴ・シガーブレンドが私の人生から居なくなった。

 

大学四回生だった昨年、卒業論文とバイトのストレスが重なり、多い日には一日で金ピースの一箱を空にした。その頃が本数的にはピークだったことを記憶している。

 

今年から新社会人になったということもあり、心機一転禁煙を決意した。金銭的理由が主な理由だが。

もちろん、今でも吸いたい気持ちはある。ストレスというのは恐ろしく、私はストレスで煙草を吸いたくなることが多いのだと感じた。

しかし、「ストレス→煙草」という思考回路を変えない限り禁煙は成功しないだろうと思い、なるべく煙草のことを考えないようにしている。

 

新社会人というタイミングも重なったためか、煙草を辞めてから生活スタイルがまるで変わった。

朝四時に起きてトレーニングジムにも通うようになったし、食生活も栄養を意識するようになった。

正直今の生活を続けているうちは、煙草が私の人生に干渉してくることはないだろう。

いつまで続くだろうか。

 

「禁煙成功の体験談」というお題の締め方として正しいかは分からないが、やっぱ、また煙草吸いたいな〜〜〜〜。