Catherine_zhilin

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

卡拉兹(Callatz)猜想

对任何一个自然数n,如果它是偶数,那么将他砍掉一半;如果它是奇数,那么把(3*n+1)砍掉一半。这样一直反复砍下去,最后一顶在某一步得到n=1。

卡拉兹在1950年的世界数学家大会上公布了这个猜想。

此处非要证明卡拉兹猜想,而是对给定的任何一个不超过1000的正整数n简单的数一下,需要多少步才能得到n=1。

输入格式:
每个测试包含一个测试用例,即给出自然数n的值。

输出格式:

输出从n计算到1需要的步数

输入样例

3

输出样例:
5

 1 #include <stdio.h> 
 2 int main(){
 3     int n,step=0;
 4     scanf("%d",&n);
 5     while(n!=1){
 6         if(n%2==0)n=n/2;
 7         else n=(3*n+1)/2;
 8         step++;
 9     }
10     printf("%d\n",step);
11     return 0;
12 }
PAT B1001

 

posted on 2019-07-05 14:44  kkkshiki  阅读(194)  评论(0编辑  收藏  举报