卡拉兹(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
转载于:https://www.cnblogs.com/Catherinezhilin/p/11138247.html
相关资源:c语言算法大全(10本经典书合集)