작성
·
317
답변 5
0
0
코드를 보셔야합니다. 소수판별기라는 이름은 제가 붙인 것이고요.
지금 보시면 들어오는 숫자에서 1인 경우는 거짓 리턴, 그 외에는 약수가 있으면 거짓 리턴입니다. 그러면 우리가 약수가 없는 수라는 것을 알 수 있죠.
소수가 그 0.123이 소수가 아니고 약수가 1외에 없는 수라는 것으로 이해하시는 것 맞으시죠?! 여기서 소수는 양의 약수가 2개인 자연수입니다.
우리가 예를 들어서
input % 2 == 0 인 경우 리턴 참을 한다면,
'짝수판별기' 인 것을 알 수 있잖아요. 이런 식으로 코드를 보고 파악하셔야합니다😊😊
0
isP 라고 되어 있는 변수명 자체로는 Prime number 라고 단정지을 수 없어 헷갈린게 아닌가 싶어요
개발자들 사이에서 관례처럼 사용되는 단어가 아닌가 유추된다고 합니다.
"is Prime"의 줄임말로 사용될 수 있고 주어진 숫자가 소수인지를 판별하는 함수일 가능성이 큽니다. 하지만 함수의 내용이나 구현 코드를 살펴봐야 정확히 알 수 있는데
for (int i = 2; i < num; i++) {
if (num % i == 0) return 0;
}
return 1;
이 부분에서 num이 소수이면 1 아니면 0을 반환해라
이렇다고 gpt가 알려주네요.... ai가 예시로 들어준 코드와 비교보니 저 부분입니다.
언뜻 보면 for문 같지만 대문자 P로 알아봐야 하나봐요 아니면 프라임 이라고 적어주기도 하는가 봅니다
0
그럼 int isP(int num)부분이 1~50, for문 i부분이 2~49로 지정되어 있는데 전체 코드상의 흐름을 예를 들자면
num = 1 -> return(0) 출력불가
num = 2-> if문 실행불가 _> return(1) 출력가능
num = 3, i =2 -> if문 3%2 = 1 -> return(1) 출력가능
num = 4, i=2, 3-> if문 4%2 = 0 -> return(0) 출력 불가능 이런식으로 가는게 맞을까요?
네 맞습니다. 지금 리턴이 0이 되는 경우
if (0) -- 거짓이므로 printf 실행하지 않음
if (1) -- 참이므로 해당 i 값 출력하는 printf문 실행
이렇게 동작합니다.
0
안녕하세요, 소스코드가 조금 어렵게 보이실 수가 있습니다.
우선 C언어의 return문에 대해서 추가적인 설명이 필요합니다.
어떤 입력값이 와서 함수를 수행한 후에, return문을 만나면 해당 함수는 값을 반환해버리고 끝나버립니다.
그러면 isP 함수에서 목적은 무엇일까요? 우리는 return 1(참)을 받아야 합니다.
약수가 1을 제외하고 하나라도 있으면 0(거짓)을 리턴하고 함수는 종료가 됩니다.
예를 들어보겠습니다.
1을 입력 받았다고 합시다. 1은 그 자체로 소수가 아닙니다. 소수가 되려면 1을 포함해서 자기자신이 약수여야 합니다. (예를 들어 7의 경우 1과 7이 자기 자신의 약수) 그래서 첫번째 if문에 걸려 0(거짓)이 리턴됩니다.
그 외에 약수가 여러개인 숫자가 뭐가 있을까요? 10이 생각나네요.
10은 약수가 1, 2, 5, 10입니다. 약수가 2개가 아니니까 0(거짓)을 리턴 받아야겠죠?
함수 안의 첫번째 if문을 통과하고 반복문을 만나게 됩니다.
반복문을 해석해보면, 자기 자신(num)보다 작으면서 "2"보다 큰 모든 수를 자기 자신(num)을 나눠서 나머지가 0인 것이 있는지 확인합니다. 나머지가 0이라는 것은 약수라는 뜻입니다. 약수가 발견되자마자 그 즉시 0(거짓)을 반환합니다. 여기에서는 2를 만나면 0을 리턴하고 함수가 끝나겠네요. 2는 10을 나누면서 나머지가 0이기 때문입니다.
저 2가지 조건 외에는 모두 소수입니다.
예를 들어 5, 7을 봅시다. 5는 첫번째 if문에도, 두번째 반복문에서도 걸리지 않습니다. 7도 마찬가지이지요?
1도 아니지만, 자기보다 작은 숫자 중에서 본인을 나머지 0으로 나누는 수가 없습니다. (1보다 크면서 자기보다 작은 약수가 없다는 뜻)
그래서 isP는 1이 아니면서, 2보다 크면서 자기 자신보다 작은 약수가 있는 경우를 제외하고 모두 1(참)을 리턴합니다.
이해에 도움이 좀 되셨을까요?
네 영어로 Prime number라고 합니다.
https://ko.m.wikipedia.org/wiki/%EC%86%8C%EC%88%98_(%EC%88%98%EB%A1%A0)