IT/모두를 위한 R 데이터 분석 입문 연습문제 by Plaver 2020. 4. 8. 문1. <스크립트 (1), (2)> < 스크립트 (3), (4) > <결과 (1), (2) > < 결과 (3), (4) > 문 2, 3, 4 <스크립트> <결과 > 문 5, 6 <스크립트> <결과> 문 7, 8 <스크립트> <결과> <문 9> <결과> 문 10, 11
<스크립트>
<결과>
문 12
<스크립트>
<결과>
틀린 것이 있다면 언제든 댓글로 달아주세요~!
관련글
댓글16
- 익명 2020.04.28 18:04
비밀댓글입니다
답글아이고, 그러네요.
4번 문제의 경우if문 안에있는
cat("*","") 문 바로아래에
next
한줄만 추가해주시면 됩니다!- 익명 2020.04.29 12:56
비밀댓글입니다
- 익명 2020.10.11 18:16
비밀댓글입니다
- 익명 2020.05.15 17:33
비밀댓글입니다
답글일단 아래 for문은 이해가 되시죠?
3부터 999까지의 숫자들 중에 소수들 구하려고 하는 것이니까요. 그래서 그 숫자들 일일해 isPrime이라는 함수에 대입해서 isPrime에서 TRUE, 즉 소수일 경우 화면에 출력하는 내용인데요.소수를 판별하는 isPrime 함수에서는 2부터 시작해서 sqrt(x)보다 작은 정수까지 돌아가면서, 해당 숫자를 나눌 수 있는지 확인합니다. 만약 나눌 수 있으면 당연히 소수가 아니므로 FALSE를 반환하고, 그 즉시 함수를 종료하는 거죠.
그리고 끝까지 나누는 수가 없다면 당연히 소수이니까 while문이 끝나고 나서 TRUE값을 반환하는 거구요.
여기서는 x를 나눌 수 있는 약수의 범위를 x의 제곱근 아래로 설정했는데, 물론 x-1 까지 나눠 볼 수도 있지만 제가 어디선가 듣기로 소수를 판별하는 방법 중에 하나가 제곱근을 이용하는 방법이더군요. 소수 판별법은 검색하시면 많이 나와있으니 아무거나 선택해서 적용하시면 될 것 같습니다.- 익명 2020.05.16 17:48
비밀댓글입니다
맞네요 =.=;;
제가 너무 대충 했네요;;
isPrime 함수를
아래 코드와 같이 수정해주세요!isPrime = function(x)
{
i <- 2
while(i < (as.integer(sqrt(x) )+1))
{
if( x %% i == 0)
return(FALSE)
i <- i + 1
}
return(TRUE)
}
- 익명 2020.10.11 18:19
비밀댓글입니다
답글2는 24의 약수가 아닌가요...?
제가 기억하기로 저 문제는 인수들을 출력하라는 내용이었던 것 같은데...
만약 약수 출력이라면
(1, 2, 3, 4, 6, 12, 24)
제가 잘못한거네요
- 익명 2020.10.13 17:57
비밀댓글입니다
답글저 위에 factorial은 그냥 문자열이고,
문제에서 요구한 factorial()을 사용하지 말라는 것은 R언어에 내장되어 있는 함수를 사용하지 말라는 의미입니다.
저 위에서는 fatorial을 직접 구현했으니 상관이 없는거죠.4번 문제의 경우 댓글에 제가 달아놨습니다. 제가 실수한 부분입니다.
- 익명 2020.10.14 12:17
비밀댓글입니다
답글죄송합니다 제가 매일 확인할 수가 없어서.... -.-;
늦어버렸네요;for(i in 2:12){
if(24 %% i == 0)
{
cat(i, " ")
}
}print_divisor = function(x)
{
k = x/2
for(i in 2:k)
{
if(x %% i == 0)
{
cat(i, " ")
}
}
cat('\n')
}
cat("\n------print with function------\n")
print_divisor(24)아래는 함수를 사용해봤습니다. 뭐 문제에는 위나 아래 어느거든 상관없겠죠.