[白俊1978]少数を探す
1058 ワード
ソースコード
prime_list = [2,3,5,7,11,13,17,19,23,29,31,37]
# 방법 1) 시간 복잡도 O(1)
def prime(a):
for i in prime_list:
if a == i:
return True
if a % i == 0:
return False
return True
# 방법 2) 시간 복잡도 O(n)
def prime(num):
for i in range(2, num//2 + 1):
if num % i == 0:
return False
return True
if __name__ == '__main__':
N = input()
num_list = list(map(int, input().split()))
cnt = 0
for i in num_list:
if i == 1:
continue
if prime(i):
cnt += 1
print(cnt)
解釈プロセス問題ではNは1000以下の自然数であるため,方法1ではprimeリストで少数リストを有限リストにする.37^2=1369(>1000)なので小数を探すには小数37まで必要です.
所要時間の複雑さは定数です.=>O(1)
方法2はNの範囲に関係のない小数点探索解法である.
所要時間複雑度はn/2であるため、nとなる.=>O(n)
Reference
この問題について([白俊1978]少数を探す), 我々は、より多くの情報をここで見つけました https://velog.io/@jimin__jella/백준-1978-소수찾기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol