1def convert10toN(n, k):
2 result = ''
3 while n > 1:
4 result = str(n%k)+ result
5 n = n // k
6 return (str(n)+result).lstrip('0')
7
8def is_prime(n):
9 if n <= 1:
10 return False
11
12 end = int(n**(1/2))+1
13 for i in range(2, end):
14 if n%i == 0:
15 return False
16 return True
17
18
19def solution(n, k):
20 A = convert10toN(n, k)
21 answer = 0
22 for i in A.split('0'):
23 if i == '': continue
24 if is_prime(int(i)):
25 answer += 1
26
27 return answer
문제
- 양의 정수 n과 k가 주어진다
- n을 k진수로 변환했을 때, 아래 조건에 맞는 소수가 몇 개인지 구하라
0P0, P0, 0P, P
- TC
- input
n: 437674, k: 3
- ouput
3
- input
해결방법
- 10진수를 k진수로 변환하는 함수, 소수인지 판별하는 함수를 정의해서 해결하였다
- 소수를 판별할 때, 에라토스테네스의 체를 사용했다가, 런타임에러를 보고, 제곱근까지 나누어보는 방식으로 바꿨다