1주차 문제

실습:

양의 정수 n,m을 입력 받고,
n부터 m까지 정수 중 소수를 출력하고, 
총 소수의 개수를 출력하는 코드를 제출하시오. [15점] 
(m ≥ n, n ≤ 50, m ≤ 50)
소수는 1과 자기 자신만을 약수로 가지는 수이다(2,3,5,7,11,13,...)

[입출력 예시]
# 입력
2 13
# 출력 
2
3
5
7
11
13
6

[채점기준]
1. 소수만 출력하는 경우 10점
2. 소수 개수만 출력하는 경우 5점
3. 입력받지 않고 변수에 바로 저장하여 출력하는 경우 -2점
[입력 예제]
괄호의 있는 정보는 조건문
첫번째
1 1

두번째
2 10

세번째
5 2

네번째
9 50

다섯번째
17 51

여섯번째
89 200

이론:

'''
다음 문장을 읽고 옳은지 틀린지 O,X로 표시한 후, 틀린 문장은 알맞게 고치시오.
 [10점] 
1. [2점] while 루프는 조건문이 거짓이 되기 전까지 계속 실행되기 때문에 "불확정 루프"라고 불린다.                    ( O )
2. [2점] 문자열에 정수값 1을 더할 수 있다.                                                                      ( X )
3. [2점] fruit = 'banana' → print(fruit[0]) 와 같이 문자열의 개별 문자에 인덱스를 활용하여 접근할 수 있다.        ( O )
4. [2점] 문자열 슬라이싱 a[0:3]은 문자열의 인덱스 0부터 인덱스 3까지의 문자를 슬라이싱한다.                         ( O )
5. [2점] 튜플은 값을 변경하거나 순서를 바꿀 수 없다. 
'''

각 코드란에 각자 이름 주석처리 부탁드려요!

# 박소정

''' 실습 문제 '''

n, m = input().split()
n = int(n)
m = int(m)
cnt = 0

for i in range(n, m + 1):
    if(i>1):
      flag = 1  
      for j in range(2, i):
          if i % j == 0:
            flag = 0
            break
          if flag == 1:
            print(i)
            cnt = cnt + 1

print(cnt)

''' 이론문제 '''

'''
1. [2점] while 루프는 조건문이 거짓이 되기 전까지 계속 실행되기 때문에 "불확정 루프"라고 불린다. 
- > 정답
2. [2점] 문자열에 정수값 1을 더할 수 있다.
- > 오답, 더할 수 없다. 정수는 정수끼리, 문자열은 문자열끼리 연산이 가능하기 때문.
3. [2점] fruit = 'banana' → print(fruit[0]) 와 같이 문자열의 개별 문자에 인덱스를 활용하여 접근할 수 있다.
- > 정답
4. [2점] 문자열 슬라이싱 a[0:3]은 문자열의 인덱스 0부터 인덱스 3까지의 문자를 슬라이싱한다.
- > 오답, 인덱스 0부터 인덱스 2까지의 문자를 슬라이싱 한다.
5. [2점] 튜플은 값을 변경하거나 순서를 바꿀 수 없다.
- > 정답
'''
# 염예은

n, m = input().split() # n,m 입력받음 (문자로)
n = int(n)
m = int(m)
cnt=0

for i in range(n,m+1,1):
    for j in range(2,i+1,1):
        if i==j:
            print("%d"%i)
            cnt+=1
        if i%j==0:
            break
print("%d"%cnt)

'''
이론문제 
다음 문장을 읽고 옳은지 틀린지 O,X로 표시한 후, 틀린 문장은 알맞게 고치시오.
 [10점] 
O 1. [2점] while 루프는 조건문이 거짓이 되기 전까지 계속 실행되기 때문에 "불확정 루프"라고 불린다. O
X 2. [2점] 문자열에 정수값 1을 더할 수 있다. ->문자열은 문자열끼리, 숫자는 숫자끼리 더할 수 있다. 
O 3. [2점] fruit = 'banana' → print(fruit[0]) 와 같이 문자열의 개별 문자에 인덱스를 활용하여 접근할 수 있다.
X 4. [2점] 문자열 슬라이싱 a[0:3]은 문자열의 인덱스 0부터 인덱스 3까지의 문자를 슬라이싱한다. ->0부터 2까지 문자를 슬라이싱한다. 
O 5. [2점] 튜플은 값을 변경하거나 순서를 바꿀 수 없다. 
'''
# 신재현
# 소수 판별 함수
def isPrime(N):
    if N < 2:
        return False
    else :
        for i in range(2, N):
            if N % i == 0:
                return False
        print(N)
        return True

# 범위 내 소수 체크 
# n부터 m까지
def PrimeCheck(n, m):
    if n > m or n > 50 or n <= 0 or m > 50 or m <= 0:
        print("Invalid Input")
        return -1
    else :
        cnt = 0
        for i in range(n, m + 1):
            if isPrime(i):
                cnt += 1
        return cnt

# main 함수
def main():
    n, m = map(int, input().split())
    cnt = PrimeCheck(n, m)
    if cnt != -1 : 
        print(cnt)

# 실행
if __name__ == "__main__":
    main()

'''
다음 문장을 읽고 옳은지 틀린지 O,X로 표시한 후, 틀린 문장은 알맞게 고치시오.
 [10점] 
1. [2점] while 루프는 조건문이 거짓이 되기 전까지 계속 실행되기 때문에 "불확정 루프"라고 불린다.                    ( O )
2. [2점] 문자열에 정수값 1을 더할 수 있다.                                                                      ( X )
3. [2점] fruit = 'banana' → print(fruit[0]) 와 같이 문자열의 개별 문자에 인덱스를 활용하여 접근할 수 있다.        ( O )
4. [2점] 문자열 슬라이싱 a[0:3]은 문자열의 인덱스 0부터 인덱스 3까지의 문자를 슬라이싱한다.                         ( X )
5. [2점] 튜플은 값을 변경하거나 순서를 바꿀 수 없다.                                                             ( O )
    ㄴ 변경이 되었다는 것은 튜플이 새로 생성된 경우
    ㄴ 변경을 필요로 할 때, list로 형 변환을 거침 
'''
# 김준혁
# 입력 받기
n, m = map(int, input().split())

# 소수 저장 리스트
p_n = []

for i in range(n, m + 1):
    if i <= 1:
        continue
    is_p = True
    for j in range(2, int(i ** 0.5) + 1): 
        if i % j == 0:
            is_p = False
            break
    if is_p:
        p_n.append(i)
        print(i)

# 총 소수 개수 출력
print(len(p_n))

'''
다음 문장을 읽고 옳은지 틀린지 O,X로 표시한 후, 틀린 문장은 알맞게 고치시오.
 [10점] 
1. [2점] while 루프는 조건문이 거짓이 되기 전까지 계속 실행되기 때문에 "불확정 루프"라고 불린다.                    ( O )
2. [2점] 문자열에 정수값 1을 더할 수 있다.                                                                      ( X )
-> 같은 형끼리 계산이 가능하다. 
3. [2점] fruit = 'banana' → print(fruit[0]) 와 같이 문자열의 개별 문자에 인덱스를 활용하여 접근할 수 있다.        ( O )
4. [2점] 문자열 슬라이싱 a[0:3]은 문자열의 인덱스 0부터 인덱스 3까지의 문자를 슬라이싱한다.                         ( X )
-> 0이상 3미만 즉, 0부터 2까지 문자를 슬라이싱
5. [2점] 튜플은 값을 변경하거나 순서를 바꿀 수 없다.                                                       ( O )
'''
# 백한결
a,b = input().split()
a=int(a)
b=int(b)
cnt =0

for i in range(a,b+1):
    if(i>1):
        n =1
        for j in range(2,i):
            if i%j==0:
                n=0
                break
            if n ==1:
                print(i)
                cnt +=1
print(cnt)

1. [2점] while 루프는 조건문이 거짓이 되기 전까지 계속 실행되기 때문에 "불확정 루프"라고 불린다.                    ( O )
2. [2점] 문자열에 정수값 1을 더할 수 있다.       (같은 형끼리 가능)                                                                 ( X )
3. [2점] fruit = 'banana' → print(fruit[0]) 와 같이 문자열의 개별 문자에 인덱스를 활용하여 접근할 수 있다.          ( O )
4. [2점] 문자열 슬라이싱 a[0:3]은 문자열의 인덱스 0부터 인덱스 3까지의 문자를 슬라이싱한다.                         ( x )
5. [2점] 튜플은 값을 변경하거나 순서를 바꿀 수 없다.                                                               ( O )