[파이썬] 소수의 개수를 받아 개수만큼의 소수 출력하기
조회수 1947회
안녕하세요. 파이썬 공부하다가 도저히 모르겠어서 질문 드립니다.
제목에 써 놓은 것과 같이 소수의 개수를 받아 개수만큼 출력하려고 합니다. while문을 사용하여 음수나 0, 엔터키는 입력 예외 처리를 하여 답을 구하고 싶은데, 아직 너무 초보자라 어떤 식으로 접근해야하고 어떤 식을 만들어야 하는지 모르겠어서 답답합니다.
- 예시 코딩 식을 보여주시면 더 감사하겠습니다.
- 코딩식이 아니라 말로 설명해 주셔도 너무 감사하겠습니다.
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
2 답변
-
>>> import sympy >>> sympy.isprime(3) True >>> sympy.isprime(10) False >>> def get_n_primes(n): ... primes = [] ... i = 1 ... while len(primes) != n: ... if sympy.isprime(i): ... primes.append(i) ... i+=1 ... return primes >>> get_n_primes(3) [2, 3, 5] >>> get_n_primes(10) [2, 3, 5, 7, 11, 13, 17, 19, 23, 29] >>> N = int(input("how many primes you want? :")) how many primes you want? :33 >>> l = get_n_primes(N) >>> l [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137]
-
def inc_from(n): while True: yield n n += 1 def take(n, iter): i = 0 while i < n: yield next(iter) i += 1 def filter(f, iter): for x in iter: if f(x): yield x def prime(iter): p = next(iter) yield p # in python2 #for v in prime(filter(lambda n: n % p != 0, iter)): # yield v # in python3 yield from prime(filter(lambda n: n % p != 0, iter)) N = 100 print([x for x in take(N, prime(inc_from(2)))])
댓글 입력