[PYTHON] 소수찾기

  <1~N까지 자연수중 소수찾기>

 

  • 문제

N이 주어졌을 때 N이하의 자연수 중 소수를 출력해라

  • input 값

33

-> 1~33중 소수인 것을 출력해라

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
= int(input()) # N=33 : 1~33중 소수인 것을 찾기. input()은 string이므로 int로 바꿔주어야 한다.
n=0 #찾은 소수의 개수를 알기위한 것
 
print(" 1부터 {}까지 소수 - ".format(N), end = ' ')
 
for i in range(2, N+1): #1은 당연히 소수가 아니므로 2부터 검사를 한다. 2 ~ N까지
    boolean = True # 처음에 모든 숫자를 소수라고 해놓고, 검사를해보자.
    for k in range(2, i): #자기자신(i)를 제외한다. 2 ~ i-1까지 반복
        if i%k == 0#자기자신(i)전까지 나눴을 때, 나누어 떨어진다면,
            boolean = False # 소수가 아니다 -> false -> break : 더이상검사필요없음
            break
    if boolean is True: # boolean이 True 상태로 내려오면 소수라는 뜻이므로, 출력
        print(i, end= ' '# enter가 아니라 바로 옆에 출력하기위한 것이다.
        n+=1 # 소수를 찾을 때마다 1씩 +하는 것이다.
 
print("\n 1부터 {}까지의 소수의 개수는 : {} 이다.".format(N,n))
cs
  • 결과값

1부터 33까지 소수 -  2 3 5 7 11 13 17 19 23 29 31

1부터 33까지의 소수의 개수는 : 11 이다.

 

  • 배울코드

1. row 20 에서 중간마다 변수를 넣는것이 아니라,format함수를 사용하여 출력하였다.

2. row 11 : boolean값을 True로 두고 시작하여, 원하는 위치에서 boolean값을 바꾸어 소수를 출력한다.

>>  이런 방식이 코딩에서 많이 쓰이는 것같다. 의미없어보이는 T/F값을 선언해주어 원하는 값을 출력하는 것이다.

 

*)

어떤 피드백이든 댓글부탁드립니다.

더 좋은 방법이 있다면 알려주세요.

도움이 되셨다면, 하트버튼 또는 댓글부탁드려요~

요청할 문제가 있다면 댓글 부탁드려요!!!

*(

[PYTHON] 문자열 거꾸로 역순 출력

  <대소문자 관계없이 거꾸로해도 같은 글자라면 "yes"를 아니라면 "no"를 출력하시오>

 

- 사용한 idle 프로그램 : visual studio

- visual studio에 파이썬 프로젝트를 만들어 그 하위에 "input.txt"파일을 생성해 input값을 자동으로 가져오게 함 (좀 더 자동화를 위해)

   >> 이 파일은 프로젝트 바로 밑에 만들어야한다. 만약, folder를 만든 후 그 안에 만든다면 읽어올 수 없어요. (이유는 몰라요)

   >> 만약, 직접 값을 넣고 싶다면 #1, #2 row는 없어도 상관없다.

  • 문제

주어진 문자 list중 역순으로 해도 똑같은지 확인하시오

  • 알고리즘 표현

 list의 문자를 하나씩 역순으로 바꾼다.

-> 원래의 문자와 같은지 검사한다.

-> 같다면 YES, 다르다면 NO를 출력한다.

 

  • input

list = [kyk, annyung, dfgfd, goodnight, heieh]

1
2
3
4
5
6
7
8
9
10
11
12
13
import sys
sys.stdin=open("input.txt","rt")  
##이 두 줄은 기본코드입니다.사실 없어도 되며, 직접 값을 넣어도 됩니다.
 
n=int(input()) # n개의 string문자가 있다.
 
for i in range(n): # n개만큼 반복됨
    string = input().lower() # 대소문자 구별을 없애기 위해, 모두 소문자로 바꿈
    if string == string[::-1]:
    # string을 거꾸로 바꾸는 코드입니다. string[마지막 index ~ -1]순으로 읽기때문에 거꾸로 문자를 바꿔준다.
        print("{} {}".format(i+1"같음"))
    else:
        print("{} {}".format(i+1"다름"))
  • 결과값

같음

다름

같음

다름

다름

  • 배울코드

  row #9 를 보면 if string == string[::-1] 라고 되어있습니다. 이것은 마지막 인덱스 ~ 첫번째인덱스(0)까지를 의미합니다.

즉, 마지막 인덱스를 생략한 코드 입니다.

만약 검사할 string이 abcde라면 len('abcde') = 5 = 마지막 인덱스이므로 [::-1] ==  [5:-1]과 같은뜻입니다.

즉, 5 -> 4 -> 3 -> 2 -> 1 -> 0 (-1은 포함하지 않기 때문) 순으로 읽어들이게 됩니다.

 

*)

어떤 피드백이든 댓글부탁드립니다.

더 좋은 방법이 있다면 알려주세요.

도움이 되셨다면, 하트버튼 또는 댓글부탁드려요~

요청할 문제가 있다면 댓글 부탁드려요!!!

*(

+ Recent posts