3*n+1问题

  

#include <iostream>
using namespace std;

// 3n+1 问题
// 猜想:对于任意大于 1 的自然数 n,若 n 为奇数,则将n变为3*n+1;否则将n变为n的一半,计算运算过程次数
void judge(int n)
{
  int count = 0;
  while (n != 1) {
    count++; // 计次输出
    if (n < 0)
      printf("值为负数,不能判别!!!\n");
    else {
      if (n % 2 == 1)
        n = 3 * n + 1;
      else
        n = n / 2;
    }
  }
  printf("运行次数是:%d\n", count);
}

int main()
{
  int n;
  cin >> n;
  judge(n);
  return 1;
}

posted @ 2020-01-07 15:37  TyranRex  阅读(268)  评论(0编辑  收藏  举报