寝癖頭の解法

学習中の覚え書きを投稿、更新していきます。

paizaラーニング: Pythonによる「素数メニュー」問題集: 素数大学

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ラーニングのレベルアップ問題集については、ユーザー同士で解答を教え合ったり、コードを公開したりするのは自由としています。
また授業や研修、教材などにも利用できるそうです。