문제 6219
소수를 검사하는 함수를 정의하고, 다음의 결과와 같이 사용자가 입력한 숫자가
소수인지를 판단하는 프로그램을 작성하십시오.
소수일 경우 "소수입니다." 출력, 아닐 경우 "소수가 아닙니다." 출력
[입력]
13
[출력]
소수입니다.
아니이 너무 어려운 거 아니요..?!
사실 본 강의 자체가 너무 어렵다.. 함수 파트 이해를 못하겠어서 문제 풀면서 한 번 부딪혀 보자! 하는 마음으로 문제 풀이부터 시작했다. 쪼오금 알겠다. 쪼오금..
처음에 문제를 제대로 안 읽고; 일단 그냥 해보자! 하면서 함수도 안 만들고 그냥 부딪혔다.
이 앞에 약수 구하는 문제를 풀었었고, 소수는 결국 약수가 1과 자기 자신이므로 그 부분을 활용하면 된다고 생각했다.
그래서 이전 문제에 썼던 코드를 그대로 써봤는데 이걸 어떻게 세어야 할 지 감이 안오더라고ㅠㅠㅠ?
T = int(input())
for i range in (1, T + 1):
if T % i ==0:
...
그래서 소수 판별에 대해 검색했고 한 블로그를 보고 역발상을 배웠다; ㅎㅎ
1과 자기 자신이 아니라 2부터 자기 자신-1인 수로 나누어 지면 소수가 아니다!라고 판단하는거지.
T = int(input())
for i in range(2, T):
if T % i == 0:
print("소수가 아닙니다.")
else:
print("소수입니다.")
이 블로그를 보고 함수 정의를 해야한다는 걸 깨닫고; ㅋㅋ 그대로 써봤는데, 안되더라고..
그래서 return 을 print로 바꾸어봤지만 ㅜㅜ
소수입니다. 라는 결과가 5번인가 반복되더라.
그래서 뭐 솔직하게 문제 번호를 검색했다...
그렇게 찾은 해설 그리고 해설을 뜯어먹으며(?) 이해하게 됐다...ㅎㅎ
해설이 꼭 나쁜 것만은 아니에요 여러분...
1차 시도(노양심) Pass
T = int(input()) #함수 정의하기 전에 변수부터 정의할 것
def prime(x): #함수는 변수 정의하듯, 엑셀에서 사용자 정의 함수처럼 내 맘대로 만들어 쓰는거였다..!
count = 0 #여기서는 약수가 몇 개인지를 세는 방식으로 문제를 해결했다
for i in range(1, x):
if T % i == 0:
count += 1 #T가 i로 나누어질 때마다 count에 1을 누적해서 더한다
if count == 2:
print("소수입니다.") #for문이 끝나고 count의 수를 계산하므로 줄 맞추기!
else:
print("소수가 아닙니다.")
print(prime(x))
내가 배운 것은
** 함수를 정의하기 전에 변수부터 정의해주자
** 함수는 변수처럼, 또는 엑셀의 사용자 정의 함수처럼 내맘대로 만들어 쓰는 것!
아직 의문
** 그치만.. return과 print의 차이
** 개념 강의 대부분 ^^...