LoginSignup
6
0

More than 3 years have passed since last update.

マルチスケールシミュレーション特論: google recruit

Last updated at Posted at 2020-11-25

!ruby-2.5.5p157

はじめに

今回はマルチスケールシミュレーション特論という大学院の授業で ruby を使った課題があったのでプログラムを作成してみた

  • 課題{e(自然対数の底)の値で連続する 10 桁の数のうち,最初の素数}を求めよ

手法

e は以下のように定義されている

e = 2.71828182845904523536028747135266249775
    7247093699959574966967627724076630353547
    5945713821785251664274274663919320030599
    2181741359662904357290033429526059563073
    81323286279434907632338298807531952510190

以下のような 手順 で今回は進めていこうと思う

手順

  • e.txt というテキストファイルに e の値を保存しておく
  • e.txt から値を読み込む
  • 2.7 の部分の "." を除去して 10 桁毎に値を区切る
  • 区切った値が素数かを判定する

プログラム

 1  #!/usr/bin/env ruby
 2  require 'prime'
 3  
 4  def divide_per_ten
 5    f = File.open("e.txt")
 6    s = f.read.delete(".")
 7    start_index, goal_index = 0, 10
 8    while true do
 9      if prime_decision(s[start_index, goal_index].to_i) == true then
10        puts s[start_index, goal_index]
11        break
12      end
13      start_index = start_index + 1
14    end
15  end
16  
17  def prime_decision(num)
18    return Prime.prime?(num)
19  end
20  
21  divide_per_ten

各関数の説明

  • divide_per_ten 関数:ファイルから e の値を読み込み、10 桁毎に区切ってprime_decision 関数に渡す

  • prime_decision 関数:素数の判定を行って、true or false を返り値として渡す

GitHub

コードは以下の URL から閲覧できます

結果

実行すると以下のような答えがでてきます

7427466391

さいごに

是非、おもしろいなと思ったら LGTM してくれると今後の励みになるのでお願いします!!

(LGTM されると嬉しくて踊りだします)


  • source ~/Downloads/git/enjoy_unix_lecture_materials/grad_members_20f/members/taiseiyo/memos/google.org
6
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
0