角谷步数(100分)
任意的正整数,比如 5, 我们从它开始,如下规则计算: 如果是偶数,则除以2,如果是奇数,则乘以3再加1。如此循环,最终必会得到“1”! 比如 5 的处理过程是: 5 16 8 4 2 1 一个正整数经过多少步才能变成1, 称为角谷步数。对于5而言,步数也是5;对于1,步数为0。
输入一个整数n(1<n<300)。
输出n的角谷步数
#include <bits/stdc++.h> // 引入整个标准库
using namespace std; // 使用标准命名空间,避免在使用标准库函数时加上 std:: 前缀
int main() {
long long int n, i = 0; // 声明两个 long long int 类型的变量:n(用于存储输入值)和 i(用于计数步骤)
cin >> n; // 从标准输入读取一个整数,并赋值给变量 n
// 当 n 不等于 1 时循环
while (n != 1) {
// 检查 n 是否为偶数
if (n % 2 == 0) {
n = n / 2; // 如果是偶数,将 n 除以 2
} else {
n = n * 3 + 1; // 如果是奇数,将 n 乘以 3 然后加 1
}
i++; // 步骤计数器加 1
}
cout << i; // 输出将 n 转换为 1 所需的步骤数
return 0; // 返回 0,表示程序成功结束
}
-
主函数:
long long int n, i = 0;
: 声明了两个long long int
类型的变量。n
用来存储输入的整数,i
用来记录步骤的数量。cin >> n;
: 从标准输入读取一个整数并赋值给变量n
。
-
循环:
while (n != 1)
: 当n
不等于 1 时,循环继续执行。if (n % 2 == 0)
: 判断n
是否为偶数。如果是,则执行n = n / 2
。else
: 如果