paizaラーニングのレベルアップ問題集「素数メニュー」からの出典です。
paiza.jp
Pythonによる「素数メニュー」問題集: 素数大学と、それらの提出コードの解答例です。
僕が作成、提出したコードは、以下のとおりです。
・STEP: 1 グロタンディーク素数
''' Pythonによる「素数メニュー」問題集: 素数大学 STEP: 1 グロタンディーク素数 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com ''' # coding: utf-8 n = 57 cnt = 0 if n < 2: print("NO") else: for i in range(2, n): if n%i == 0: cnt+=1 if cnt == 0: print("YES") else: print("NO")
・STEP: 2 素数判定
''' Pythonによる「素数メニュー」問題集: 素数大学 STEP: 2 素数判定 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com ''' # coding: utf-8 n = int(input()) cnt = 0 if n < 2: print("NO") else: for i in range(2, n): if n%i == 0: cnt+=1 if cnt == 0: print("YES") else: print("NO")
・STEP: 3 大きな数の素数判定
''' Pythonによる「素数メニュー」問題集: 素数大学 STEP: 3 大きな数の素数判定 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com ''' # coding: utf-8 import math n = int(input()) cnt = 0 if n < 2: print("NO") elif n == 2: print("YES") elif n%2 == 0: print("NO") else: m = math.floor(math.sqrt(n)) + 1 for i in range(3, m, 2): if n%i == 0: cnt+=1 if cnt == 0: print("YES") else: print("NO")
・STEP: 4 エラトステネスの篩
''' Pythonによる「素数メニュー」問題集: 素数大学 STEP: 4 エラトステネスの篩 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com ''' # coding: utf-8 import math n = int(input()) is_prime = list(range(n+1)) is_prime[0] = False is_prime[1] = False for i in range(2, n+1): is_prime[i] = True for i in range(2, n+1): if is_prime[i]: for j in range(2, n+1): if i*j > n: break is_prime[i*j] = False if is_prime[n]: print("YES") else: print("NO")
・STEP: 5 フェルマーテスト
''' Pythonによる「素数メニュー」問題集: 素数大学 STEP: 5 フェルマーテスト https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com ''' # coding: utf-8 n = int(input()) a = 2 farmat = 1 for i in range(0, n-1): farmat*=a farmat%=n if n%a == 0: print("NO") elif farmat == 1: print("YES") else: print("NO")
・FINAL問題: 素数大学
''' Pythonによる「素数メニュー」問題集: 素数大学 FINAL問題: 素数大学 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com ''' # coding: utf-8 import math n = int(input()) for i in range(n): a = int(input()) if a < 2: print("failure") elif a == 2: print("pass") elif a%2 == 0: print("failure") else: cnt = 0 m = math.floor(math.sqrt(a)) + 1 for j in range(3, m, 2): if a%j == 0: cnt+=1 break if cnt == 0: print("pass") else: print("failure")
paizaラーニングのレベルアップ問題集については、ユーザー同士で解答を教え合ったり、コードを公開したりするのは自由としています。
また授業や研修、教材などにも利用できるそうです。