🐷

コラッツの問題

2020/10/13に公開

コラッツの問題と言うのがある。

このコラッツの、連続する正の整数を生成するプログラムをCで書いた。

  • 1以上の整数を受け付ける
  • 入力した数字以降のsequenceを出力
#include<stdio.h>

int main() {
    int n;

    do{
        printf("Input any number: ");
        scanf("%d", &n);
    }while(n < 1);

    do{
        n = n % 2 == 0 ? n / 2 : n * 3 + 1;
        printf("%d ", n);
    }while(n != 1);
    printf("\n");
    return 0;
}
Input any number: 13
40 20 10 5 16 8 4 2 1 

do~while文を使っているのは、inputが1の時も受け付けるようにするため。

Input any number: 1
4 2 1 

https://www.geeksforgeeks.org/program-to-print-collatz-sequence/

Discussion