关于c语言中如何解决3n+1,溢出有关问题
2014-02-05 16:21
846 查看
3n+1问题是一个简单有趣而又没有解决的数学问题。这个问题是由L. Collatz在1937年提出的。克拉兹问题(Collatz problem)也被叫做hailstone问题、3n+1问题、Hasse算法问题、Kakutani算法问题、Thwaites猜想或者Ulam问题。
问题如下:
(1)输入一个正整数n;
(2)如果n=1则结束;
(3)如果n是奇数,则n变为3n+1,否则n变为n/2;
(4)转入第(2)步。
刘汝佳的书上就写着,但是输出987654321时候还是溢出拉。
/*#include<stdio.h>
int main()
{
int n;
int count=0;
scanf("%d",&n);
while(n>1)
{
if(n%2!=0)
{
n=3*n+1;
}
else
n=n/2;
count++;
printf("%d\n",n);
}
printf("%d\n",count);
}
*/
然后我是一个小菜鸟,但是我今天弄了半天居然弄出来了,嘿嘿,这个是我的成果,不知道对不对,分享给大家,在我用的软件Code Blocks上运行成功了!987654321也能出来正确结果,嘻嘻。
#include<stdio.h>
int main()
{
long long n;
int count=0;
scanf("%I64d",&n);
while(n>1)
{
if(n%2!=0)
n=(long long)3*n+1;
else
n=(long long)n/2;
printf("%I64d ",n);
count++;
}
printf("%d\n",count);
}
问题如下:
(1)输入一个正整数n;
(2)如果n=1则结束;
(3)如果n是奇数,则n变为3n+1,否则n变为n/2;
(4)转入第(2)步。
刘汝佳的书上就写着,但是输出987654321时候还是溢出拉。
/*#include<stdio.h>
int main()
{
int n;
int count=0;
scanf("%d",&n);
while(n>1)
{
if(n%2!=0)
{
n=3*n+1;
}
else
n=n/2;
count++;
printf("%d\n",n);
}
printf("%d\n",count);
}
*/
然后我是一个小菜鸟,但是我今天弄了半天居然弄出来了,嘿嘿,这个是我的成果,不知道对不对,分享给大家,在我用的软件Code Blocks上运行成功了!987654321也能出来正确结果,嘻嘻。
#include<stdio.h>
int main()
{
long long n;
int count=0;
scanf("%I64d",&n);
while(n>1)
{
if(n%2!=0)
n=(long long)3*n+1;
else
n=(long long)n/2;
printf("%I64d ",n);
count++;
}
printf("%d\n",count);
}
相关文章推荐
- 关于3N+1溢出问题的解决
- c语言中3n+1溢出问题解决
- 关于redis主从备份,主机拒绝写入问题 java客户端为保障正常运行该如何操作?( 自码待解决问)
- 关于成如何使用C语言处理数组元素c[-1]=0的问题
- 如何检查和解决Java虚拟机内存溢出的问题?
- Xcode学习笔记中关于如何定义宏问题解决
- 如何清除浮动元素对父元素高度的影响 & 如何解决外边距溢出问题
- 如何解决关于TableView里面cell随机显示的问题
- 关于css清除浮动,解决内容溢出的问题
- 有关csdn如何换头像的问题解决办法
- 如何用C语言解决逻辑问题幸运的数字
- Android开发中如何解决加载大图片时内存溢出的问题
- Android开发中如何解决加载大图片时内存溢出的问题
- Xcode学习笔记中关于如何定义宏问题解决
- 看到的关于如何解决ArcEngine license 许可证的问题
- iOS指南系列:如何解决奔溃问题-关于内存访问续
- 关于短信猫死机的问题程序要如何解决
- iTextSharp应用中关于“Cannot access a closed Stream”问题的解决办法(附带提供如何在页面中显示PDF的流)
- 解决关于如何实现锁屏后继续播放音乐的问题
- 关于如何解决C++ Builder中DBLookupComboBox不能输入的问题: