본문 바로가기

대학교 1-2/컴프

HW4_5_1

어떤 정수 n이 짝수면 2로 나누고 홀수면 3을 곱한 다음 1을 더한다. 이렇게 해서 새로 만들어진 숫자를 n으로 놓고 n=1이 될 때까지 같은 작업을 반복한다.

예를 들어 n=22이면 다음과 같은 수열 이 만들어진다.

22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1

이 때 1이 나올 때까지 만들어진 수의 개수를 (n과 1포함) 사이클 길이라 한다.

예를 들어 n=22인 경우에는 사이클 길이가 16이다 (15아님).

특정한 수를 파라미터로 받아 위와 같은 수열을 출력하고 사이클 길이를 리턴해주는 함수를 반복문을 이용하여 작성하시오.

함수의 원형은 int get_cycle_number(int n); 이다. main함수를 만들어 위의 함수를 테스트하라.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int get_cycle_number(int n);
int main (void)
{
    int number;
 
    printf("숫자를 입력하세요:");
    scanf("%d"&number);
 
    printf("\n%d",get_cycle_number(number));
    return 0;
}
int get_cycle_number(int n)
{
    int length = 1;//처음에 입력된 값이 있으니 1로놓기
    printf("%d ", n);
    do {
        if (n % 2 == 0
            n = n / 2;
        else 
            n = n * 3 + 1;
        printf("%d ", n);
        length++;
    } while (n != 1);
 
    return length;
}
cs

length는 처음에 입력된 값이 있으니 1로 놓는다

n이 1이 아닐때까지 반복하고 1이면 빠져나온다

n이 짝수면 2를 나누고 홀수면 3을 곱하고 1을 더한다

한 반복이 끝날때마다 길이도 1씩 증가하게 해놓는다

 

 

'대학교 1-2 > 컴프' 카테고리의 다른 글

Challenge 4_2  (0) 2023.10.03
HW4_5_2  (0) 2023.10.03
HW4_3_1  (0) 2023.10.03
HW4_3_0  (0) 2023.10.03
HW4_4  (0) 2023.09.26