5.22打卡

发布时间 2023-05-22 19:48:31作者: 恋恋恋白
一、问题描述:

角谷猜想,在西方常被称为西拉古斯猜想,据说这个问题首先是美国的西拉古斯大学开始研究的,而在东方,这个问题则由将它带到日本的日本数学家角谷静夫的名字来命名,所以被称为角谷猜想。
角谷猜想的内容是:任给一个自然数,若为偶数则除以2,若为奇数则乘以3再加1,这样得到一个新的自然数之后再按照前面的法则继续演算,若干次以后得到的结果必然为1.在数学文献里,角谷猜想也常常被称为“3X+1问题”。请编程验证角谷猜想。

二、设计思路:
角谷猜想中已经明确的给出了处理过程,即对于给定的自然数n,有如下函数:C(n)={n/2 n是偶数
     {3n+1n n是奇数
在问题分析中进行的变换,实际上是对函数C进行的迭代。则问题可表述为:从任意一个自然数开始,经过对函数C有限次的迭代,能否最终得到1。算法不需要特别的设计,根据函数C可直接进行角谷猜想的验证。

三、程序流程图

 

 

四、代码实现

#include<stdio.h>

int main()

{

    int n,count=0;

    printf("请输入一个自然数:");

    scanf("%d",&n);

    do{

        if(n%2)

        {

            n=n*3+1;

            printf("[%d]:%d*3+1=%d\n",++count,(n-1)/3,n);

        }

        else{

            n/=2;

            printf("[%d]:%d/2=%d\n",++count,2*n,n);

            }

 

    }while(n!=1);

}