3n+1问题
来源:互联网 发布:客户数据库 编辑:程序博客网 时间:2024/05/17 17:55
今天看到一个3n+1问题,其大致意思是对于输入的任意一个整数n,若其是偶数,则将其除以2 ,若是奇数,则将其乘以3再加1;重复此步骤,其结果必定终止于1。
例如 :输入的数为5,则
5 16 8 4 2 1
对于上述序列的长度称为n的循环节长度。想要求编写一个程序求某段区间内循环节长度最大的数,并输出。
输入输出示例:
input output
1 10 1 10 20
100 200 100 200 125
下面是实现代码,其主要运用了递归的算法。笔者水平有限,望读者对程序参考指正。
#include<stdio.h>#include<stdlib.h>static int sum=0;int asksum(int m){if(m==1){sum++;;return 0;}if(m%2==0){m=m>>1;sum++;return asksum(m);}else{m=m*3+1;sum++;return asksum(m);}}int main(void){int m=0,n=0,i,j;int *p=0;while(scanf("%d%d",&m,&n)){p=(int*)malloc((n-m+1)*sizeof(int));for(i=m,j=0;i<=n;++i,j++){asksum(i);p[j]=sum;sum=0;}for(j=1;j<n-m+1;++j){if(p[j]>p[0])p[0]=p[j];}printf("%d,%d,%d\n",m,n,p[0]);free(p);}return 0;}
0 0
- 3n+1问题
- 3n+1问题
- 3n+1问题
- 3n+1问题
- 3n+1问题
- 3n+1问题
- 3n+1问题
- 3n+1问题
- 3n+1问题
- 3n+1问题
- 3n+1问题
- 3n+1问题
- 3n+1问题
- 3n+1问题
- 3n+1问题
- 3n+1问题
- 3n+1 问题
- UVa 3n+1 问题
- Java泛型的上限和下限
- 单一入口文件的定义
- B
- XMPP协议的原理介绍
- HDU 5389 Zero Escape
- 3n+1问题
- JS
- [java]java实现哈夫曼编码
- 欢迎使用CSDN-markdown编辑器
- 使用showOptionDialog显示多项选择框
- 【死磕Java并发】—–J.U.C之Condition
- 棋子翻转
- 数据库表操作
- OpenCV第一次尝试