角谷猜想
- C语言代码
- C++ 语言代码
- Java语言代码
- Python语言代码
💐The Begin💐点点关注,收藏不迷路💐 |
所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。如,假定初始整数为5,计算过程分别为16、8、4、2、1。
程序要求输入一个整数,将经过处理得到1的过程输出来。
输入
一个正整数N(N <= 2,000,000)
输出
从输入整数到1的步骤,每一步为一行,每一部中描述计算过程。最后一行输出"End"。如果输入为1,直接输出"End"。
样例输入
5
样例输出
5*3+1=16
16/2=8
8/2=4
4/2=2
2/2=1
End
C语言代码
#include <stdio.h>int main() {int n;scanf("%d", &n); // 读取输入的正整数nif (n == 1) { // 如果输入就是1,直接输出Endprintf("End\n");return 0;}while (n!= 1) { // 当n不等于1时,持续循环进行操作if (n % 2 == 1) { // 判断n是否为奇数int temp = n * 3 + 1; // 如果是奇数,按照规则乘3加1printf("%d*3+1=%d\n", n, temp);n = temp; // 更新n的值} else {int temp = n / 2; // 如果是偶数,按照规则除以2printf("%d/2=%d\n", n, temp);n = temp; // 更新n的值}}printf("End\n"); // 最终输出Endreturn 0;
}
C++ 语言代码
#include <iostream>
using namespace std;int main() {int n;cin >> n; // 输入正整数nif (n == 1) { // 若输入为1,直接输出Endcout << "End" << endl;return 0;}while (n!= 1) { // 只要n不等于1,就循环操作if (n % 2 == 1) { // 判断n是否为奇数int temp = n * 3 + 1; // 奇数则乘3加1cout << n << "*3+1=" << temp << endl;n = temp; // 更新n} else {int temp = n / 2; // 偶数则除以2cout << n << "/2=" << temp << endl;n = temp; // 更新n}}cout << "End" << endl; // 最后输出Endreturn 0;
}
Java语言代码
java">import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt(); // 获取输入的正整数nif (n == 1) { // 若输入为1,直接输出EndSystem.out.println("End");return 0;}while (n!= 1) { // 当n不等于1时循环处理if (n % 2 == 1) { // 判断n是否为奇数int temp = n * 3 + 1; // 奇数按规则乘3加1System.out.println(n + "*3+1=" + temp);n = temp; // 更新n的值} else {int temp = n / 2; // 偶数按规则除以2System.out.println(n + "/2=" + temp);n = temp; // 更新n的值}}System.out.println("End"); // 最后输出Endreturn 0;}
}
Python语言代码
n = int(input()) # 获取输入的正整数n
if n == 1: # 如果输入是1,直接输出Endprint("End")
else:while n!= 1: # 只要n不等于1,就循环操作if n % 2 == 1: // 判断n是否为奇数new_n = n * 3 + 1 # 奇数按规则乘3加1print(f"{n}*3+1={new_n}")n = new_n # 更新nelse:new_n = n // 2 # 偶数按规则除以2print(f"{n}/2={new_n}")n = new_n # 更新nprint("End") # 最后输出End
💐The End💐点点关注,收藏不迷路💐 |