はじめに
コジマです。
https://projecteuler.net/
の7問目を解いていきます。
問題
What is the 10 001st prime number?
リストによって6番目の素数は: 2,3,5,7,11, そして 13となり、6番目の素数は13だとわかる。
10001番目の素数はなにか?
解答例
【Project Euler】No3: Largest prime factor 解答例【Python】
過去に扱った素数判定ロジックを流用していきます。
10001番目の素数になったところで処理をストップします。
# おまじない import numpy as np import math # 素数探索の初期値を10に設定 n = 10 # cnt番目の素数をしりたい。 # 1桁目は見なかったことにするので、5で初期化 cnt = 5 # 10001番目の素数が見つかるまでやる def judgePrime(n): # 1の位が [0, 2, 4, 5, 6, 8]の時計算不要 if n % 10 in [0, 2, 4, 5, 6, 8]: # 素数じゃない return 0 # 3の倍数判定 # 1文字ずつの配列作成 num_array = list(map(int, str(n))) if sum(num_array) % 3 == 0: # 素数じゃない return 0 # √nまで調べればOK for i in range(3 , int(math.sqrt(n))+1, 2): if(n % i == 0): # 素数じゃない #print(n , i) return 0 else: pass # 素数 #print("{}番目の素数 : {}".format(cnt, n)) return n # ここかっこ悪いソースだなと思いながら書いてた result = 0 while True: result = judgePrime(n) if result != 0: if cnt == 10001: break cnt += 1 n += 1 print("cnt = {}".format(cnt)) print("10001番目の素数:{}".format(n))
さいごに
解答はgithubにも上げています。
https://github.com/kojimanotech/project_euler/blob/master/0007_10001st_prime.ipynb
この記事を面白いまたは役に立ったと思ってくれた方は是非私のTwitter(@kojimanotech)を
フォローしてくれたらうれしいです!
もっと学びたい人はこちら
Python、機械学習をもっと学びたいという人のためにおすすめのUdemy講座を紹介いたします!
Pythonの基本文法を押さえたい方はこちらの動画がおすすめです。
エンジニアになりたいと思って駆け出した方がPythonを選んだときはこの講座から始めるとよいと思います。
Python 3 エンジニア認定基礎試験の対策にもなります。
はじめてのPython 少しずつ丁寧に学ぶプログラミング言語Python3のエッセンス
プログラムの基礎が分かる方で機械学習に興味がある方はこちらがおすすめです。
SIGNATEという日本版Kaggleのサービスを実際に使用してハンズオン形式でデータ分析・機械学習を学ぶことができます。
もちろんこの動画だけで特級のデータサイエンティストになれるわけではないですが、機械学習の門を叩くにはとても良い講座だと思います。
【ゼロから始めるデータ分析】 ビジネスケースで学ぶPythonデータサイエンス入門
Pythonのライブラリで必ず押さえておきたいのがNumpy, Pandas, Matplotlibの3つ。
この3つを網羅的に学ぶことができる講座です。
英語の講座ですが、わかりやすい英語ですし、ソースコードメインで解説しているので
ソースコードを一緒に手を動かしながら学べば十分理解することができます。
機械学習を使わない人にもおすすめの講座です。
2021 NumPy, Pandas and Matplotlib A-Z™: for Machine Learning
気になった人はぜひ見てみてくださいね!
以上、コジマでした。