C++语言 如何证明1到1000的3n+1猜想,要用到双循环结构,求大神帮助

C++语言 如何证明1到1000的3n+1猜想,要用到双循环结构,求大神帮助

c++

2个回答

 #include<iostream>  
using namespace std;
int main()  
{  
for(int n = 1; n <= 1000; n++) {
    int count = 0;  
    while (n != 1)  
    {  
        if (n % 2 == 0)  
            n /= 2;  
        else  
            n = (3 * n + 1) / 2;  
        count++;  
    } 
        cout << n << ": " << count << endl;
}
}
caozhy
每个人都有一个梦才不会孤单的说话就有天堂 回复weixin_36734147: 你一修改就不对了,这个证明的方法就是直接把1-1000都算下,根据猜想,每个都可以求出一个count
3 年多之前 回复
weixin_36734147
weixin_36734147 哥,我修改了下,但是还是不知道cout=0有什么意义啊,能说说嘛,我修改的在下面让执行的数字和结果对应这样做可以吗
3 年多之前 回复

#include

using namespace std;
int main()

{

for(int n = 1; n <= 1000; n++)
for(int m=1;m<=1000;m++) {
int count = 0;

while (n != 1)

{

if (n % 2 == 0)

n /= 2;

else

n = (3 * n + 1) / 2;if(m=1000,n=1000)break;

count++;

}
cout << "m="<<m<<n << ": " << count << endl;
}
}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
PAT 1005 继续(3n+1)猜想(详解)
卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数。例如对n=3进行验证的时候,我们需要计算3、5、8、4、2、1,则当我们对n=5、8、4、2进行验证的时候,就可以直接判定卡拉兹猜想的真伪,而不需要重复计算,因为这4个数已经在验证3的时候遇到过了,我们称5、8、4、2是被
3n+1猜想
对任何一个自然数n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把(3n+1)砍掉一半。这样一直反复砍下去,最后一定在某一步得到n=1。卡拉兹在1950年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证(3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进展……我们今天的题目不是证明
害死人不偿命的(3n+1)猜想
来自PAT的一道有意思的题目: 卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把(3n+1)砍掉一半。这样一直反复砍下去,最后一定在某一步得到n=1。卡拉兹在1950年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证(3n+1),以至于有人说这是一个阴谋
PAT 乙级真题 1005. 继续(3n+1)猜想
1005. 继续(3n+1)猜想 卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数。例如对n=3n=3进行验证的时候,我们需要计算3、5、8、4、2、1,3、5、8、4、2、1,则当我们对n=5、8、4、2n=5、8、4、2进行验证的时候,就可以直接判定卡拉兹
PAT1001. 害死人不偿命的(3n+1)猜想 java;python实现
卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把(3n+1)砍掉一半。这样一直反复砍下去,最后一定在某一步得到n=1。卡拉兹在1950年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证(3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学
3n+1问题 C语言实现
3N+1问题 c语言实现 挑战编程上的原题 考虑一下数列的生成办法.由n开始. 如果 n是偶数除以2. 如果是奇数, 除以3加1. 这样产生一个新的n, 长此以往,直到n = 1. 例如 n = 22: 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 历史证明:0~1000 000无所例外 求这样的数列的长度.例如对于22的数的长度是16。 程序要求: 输入m,n求[m,n]之间的所有数中的最长的长度输出
算法笔记(一)害死人不偿命的(3n+1)猜想
算法算是我比较薄弱的部分了,所以万丈高楼平地起,我要从最基本的算法学起来。做项目和有算法思想是不一样的,我会变得更好。每天一道算法题:输入一个数,偶数时则砍掉一半;奇数时,则(3n+1)砍掉一半,最后直到得到1.问,进行了多少次?思路:对于3n+1这样的题目,我第一感觉就是将运算部分封装起来,然后主函数循环调用书给的答案:#include &amp;lt;cstdio.h&amp;gt; int main() ...
C语言解决对给定的任一不超过1000的正整数n,简单地数一下,需要多少步(砍几下)才能得到n=1?
/* 卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把(3n+1)砍掉一半。这样一直反复砍下去, 最后一定在某一步得到n=1。卡拉兹在1950年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员, 拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证(3n+1),以至于有人说这是一个阴谋, 卡拉兹是在蓄意延
卡拉兹猜想
PAT(Basic Level) PractiseNO.1001卡拉兹(Callatz)猜想:对任何一个自然数n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把(3n+1)砍掉一半。这样一直反复砍下去,最后一定在某一步得到n=1。卡拉兹在1950年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证(3n+1),以至
PAT(乙级)1005. 继续(3n+1)猜想
题目: 卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数。例如对n=3进行验证的时候,我们需要计算3、5、8、4、2、1,则当我们对n=5、8、4、2进行验证的时候,就可以直接判定卡拉兹猜想的真伪,而不需要重复计算,因为这4个数已经在验证3的时候遇到过了,我们称5、
pat中文练习题:简单题:1001. 害死人不偿命的(3n+1)猜想
卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把(3n+1)砍掉一半。这样一直反复砍下去,最后一定在某一步得到n=1。卡拉兹在1950年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证(3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学
出现Time Limit Exceed 求解 对于任意大于1的自然数n,如果n为奇数,则n=3n+1,否则n=n/2,则经过若干步骤后n一定会变成1
猜想:对于任意大于1的自然数n,如果n为奇数,则n=3n+1,否则n=n/2,则经过若干步骤后n一定会变成1;  如:3->10->5->16->8->4->2->1  共7步,  输入n,  输出变换次数  Input 输入n,  n<=1000000000  Output 变换次数 Sample Input 3 S
1001. 害死人不偿命的(3n+1)猜想 (15) java
卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把(3n+1)砍掉一半。这样一直反复砍下去,最后一定在某一步得到n=1。卡拉兹在1950年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证(3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学
17.4.8.3n+1猜想、考拉兹猜想
了解 3n+1 猜想Problem E: 六队-Guess the maximum and minimum Description ​ Utopian发现了一个很有趣的数字游戏。任意给定一个自然数n,按照下列规则进行变换: 如果n为偶数,n = n/2 如果n为奇数,n = 3*n+1 试猜测在变换过程中最大的n与最小的n? 并试求出从给定的n到最小的n的最少变换次数? Input 包
1147: 【C语言训练】角谷猜想(其实是3n+1)
题目描述 角谷猜想: 日本一位中学生发现一个奇妙的“定理”,请角谷教授证明,而教授无能为力,于是产生角谷猜想。猜想的内容是:任给一个自然数,若为偶数除以2,若为奇数则乘3加1,得到一个新的自然数后按照上面的法则继续演算,若干次后得到的结果必然为1。请编程验证。 输入 任一正整数 输出 演算的过程 样例输入 10 样例输出 10/2=5 5*3+1=16 16/
小编程题之(3n+1)卡拉兹猜想
对任何一个自然数n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把(3n+1)砍掉一半。这样一直反复砍下去,最后一定在某一步得到n=1。卡拉兹在1950年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证(3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进展…… 我们今天的题目
PAT Basic 1005. 继续(3n+1)猜想 (25)(C语言实现)
最新内容已发布在 我的Github Pages, CSDN内容暂时不更新(将来有计划更新), 请前往链接查看最新内容. 欢迎star 我的repo题目卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数。例如对n=3进行验证的时候,我们需要计算3、5、8、4、2、...
3n+1猜想 (有错·应使用递归)
3n+1猜想”#include”stdio.h” // 3n+1猜想 main() { int n,step=0;scanf("%d",&n);if(n%2==1){ while(n!=0){ loop: n=(3*n+1)/2; if(n%2==1){ goto loop; //难道要用递归?果然要用递归
PAT乙级1001. 害死人不偿命的(3n+1)猜想 (15) C++
这道题目并不是很难,解题思路如下: 首先根据计算方法,把每一次的处理分为两种情况(奇数、偶数),然后因为要得出次数,所以很自然需要计数器和循环。临界条件比较清晰,题目中说:简单地数一下,需要多少步才能得到n=1?所以临界条件就是n是否等于一,这里编程就是n!=1。我的代码如下:#include <iostream> using namespace std; int main(int argc, c
c程序:求1-1000之间的所有奇数的和并输出
//求1-1000之间的所有奇数的和并输出 #include void main(void) {     int sum;     int i;     for( i = 1; i     {         sum += i;     }     printf("%d",sum); }
OJ题:奇偶归一猜想——求归一过程中的最大值
题目:题目内容: 奇偶归一猜想——对于每一个正整数,如果它是奇数,则对它乘3再加1,如果它是偶数,则对它除以2,如此循环,最终都能够得到1。 如n = 11,得序列:11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1。(步骤中最大数是52) 题目输入正整数n,求这个n归一过程中的最大值 输入格式: 一个正整数 输出格式: 一个正整
1001. 害死人不偿命的(3n+1)猜想 (15)(Python)
卡拉兹(Callatz)猜想:对任何一个自然数n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把(3n+1)砍掉一半。这样一直反复砍下去,最后一定在某一步得到n=1。卡拉兹在1950年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证(3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进
求1~1000的质数(素数)
题目:求1~1000的质数(素数) 思路:素数、即质数,是在大于1的整数中只能被1和其自身整除的数。检查一个正整数N是否为素数,最简单的方法就是试除法,将该数N用小于等于根号N的所有素数去试除,若均无法整除,则N为素数。 代码: #include #include #define MAXSIZE 1000 int main() { int prime[500]; in
实现1-1000中所有素数的和
这几天给学生上完循环结构后,想给学生出一道这样的题,题目如下:**用所学的while,do…while,for循环实现1-1000所有素数的和。 要求:独立完成,可以网上查阅资料,但必须要理解程序的意思**根据这个题目,会有很多种编写方式,方法不唯一,我下面写几种方法。 在写代码之前,需要分析一下这道题应该怎么下手,也就是我们所谓的算法,一个好的算法能提高程序的运算性能和执行效率,那么这道题怎么
1005. 继续(3n+1)猜想 (25)——做题纪录
卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数。例如对n=3进行验证的时候,我们需要计算3、5、8、4、2、1,则当我们对n=5、8、4、2进行验证的时候,就可以直接判定卡拉兹猜想的真伪,而不需要重复计算,因为这4个数已经在验证3的时候遇到过了,我们称5、8、4、2是被
求1-1000之间的所有奇数de和并输出
#include main() {    int n,k,sum;                                                      //求1-1000之间的所有奇数de和并输出    sum=0;    for( n=0;n {    k=2*n+1;         sum=sum+k;                          
1005. 继续(3n+1)猜想 (25) PAT乙级真题
1005. 继续(3n+1)猜想 (25)卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数。例如对n=3进行验证的时候,我们需要计算3、5、8、4、2、1,则当我们对n=5、8、4、2进行验证的时候,就可以直接判定卡拉兹猜想的真伪,而不需要重复计算,因为这4个数已经在验证3的时候...
黎曼猜想 : 证明过程解读
9月20日,英国数学家迈克尔·阿蒂亚宣称黎曼猜想得证,将于9月24日在海德堡获奖者论坛上宣讲。阿蒂亚被誉为当代最伟大的数学家之一,1966年荣获菲尔茨奖,2004年与辛格...
【C语言】输出1--1000以内的水仙花数
所谓的水仙花数,就是这个三位数的每一位的三次方加起来是否等于这个数
求1-1000的奇数之和
#include <stdio.h> void main( ) { int i, sum=0; for(i=1; i<1000; i=i+2) sum+=i; printf("奇数之和:%d\n",sum); return 0; }
c语言验证哥德巴赫猜想
什么是哥德巴赫猜想,哥德巴赫猜想就是,任一大于2的偶数都可以写成两个素数之和,那么下面我们就用c语言去验证这种猜想
【OpenJudge】c语言_角谷猜想
/* 描述 所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理, 最终总能够得到1。如,假定初始整数为5,计算过程分别为16、8、4、2、1。 程序要求输入一个整数,将经过处理得到1的过程输出来。 输入 一个正整数 输出 从输入整数到1的步骤,每一步为一行,每一部中描述
输出1到1000以内的素数
质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数,这样的数称为质数。思路:偶数肯定不是素数,所以递增的时候可以以奇数的形式递增,再在奇数中去掉非质数的数。C++版:#include&amp;lt;iostream&amp;gt;using namespace std;int main(){    cout &amp;lt;&amp;lt; 3 &amp;lt;&amp;lt;...
【项目1:利用循环求和】求1000以内所有偶数的和
/* * Copyright (c) 2012, 烟台大学计算机学院 * All rights reserved. * 作 者:解晓东 * 完成日期:2012 年 10 月 31 日 * 版 本 号:v1.0 * * 输入描述: 无 * 问题描述:求1000以内所有偶数的和 * 程序输出:求和结果 * 问题分析:(用for语句完成)累
C语言学习笔记_算法——“求1000以内完数”
/*** 求1000以内完数(完数恰好等于它的真因子之和,如6=1+2+3). ***/ #include void main() { int num,sum,i; for(num=6;num<=1000;num++) { sum=1; for(i=2;i<=num/2;i++) //很多资料都用i<num来作判断条件,不过当num/2<i<num,很明显不存在num%i==
c编程:角谷猜想
所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。如,假定初始整数为5,计算过程分别为16、8、4、2、1。 程序要求输入一个整数,将经过处理得到1的过程输出来。 #include #include int aa(int a); //角谷猜想 int main() { int n; scanf("%d",
C编程—找1000以内的素数
/*开始时间: 2016-07-14 13:51:58 实现功能: 素数即除了本身和1以外不能被其他比他小的数整除的数 */ #include #include #include #include using namespace std; int main(void) { int shuru=0,i,j; scanf("%d",&shuru); if(shuru<=0) p
卡拉兹(Callatz)猜想
卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把(3n+1)砍掉一半。这样一直反复砍下去,最后一定在某一步得到n=1。卡拉兹在1950年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证(3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学
求满足从1加到m的和大于1000的最小m值
求满足从1加到m的和大于1000的最小m值。解:>> mysum=0;>> for m=1:1000mysum=mysum+m;if(mysum>1000)break;endend>> m m = 45本文出自 “岩枭” 博客,请务必保留此出处http://yaoyaolx.blog.51cto.com/10732111/1750552
C语言求1000以内水仙花数
水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 n 位数(n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。
编写一个程序,求满足以下条件 n 的最大值: 1^1+2^2+2^3+…+2^n<1000
编写一个程序,求满足以下条件 n 的最大值: 1^1+2^2+2^3+…+2^n#include #include int main(){ int sum=0; int start=2; int count=0; while(sum+1#include #include #define N 1000 int main(){ int i,n=1; for(i=0;n
【C语言】把从1到1000的数打印出来,但你不能使用任何的循环语句或是条件语句。
来看一个很有意思的一个题目。题目是这样的:请把从1到1000的数打印出来,但你不能使用任何的循环语句或是条件语句。看到这个题当时我也是蒙了。首先想到用的是递归来实现,但是怎么跳出这个循环呢?我想了想,有人给了提示,可以使用与来判断:先看代码:#include  int print(int num) { num && print(num-1); printf("%d ",num); retu
C++课后练习——输入n,求1!+2!+3!+...+n!
输入n,求1!+2!+3!+...+n! #include&amp;lt;iostream&amp;gt; using namespace std; void main() { int i,n,a=1,s=0; cout&amp;lt;&amp;lt;&quot;请输入一个整数:&quot;; cin&amp;gt;&amp;gt;n; for(i=1;i&amp;lt;=n;i++){ a=a*i; s...
求大数的阶乘。比如1000的阶乘。C语言里没有能够存这么大的数据类型。
我的想法是用两个循环, 外层循环qiumeigeshu
用C语言来验证哥德巴赫猜想(定义的是int型)
哥德巴赫猜想:如果任意一个大于6的偶数都可以写成两个素数之和。
c/c++ 算法之 输出1~1000之间的素数
判断素数,是学习c、c++必接触的一个算法,希望此算法对你有所帮助,同时欢迎交流,共同学习 // AnswerIntheInternet.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include #include int _tmain(int argc, _TCHAR* argv[]) {  int is
自己写的解决角谷猜想的程序
最近在看C语言实力解析精粹的时候看到一个关于角谷猜想的问题,由于源程序书上没(随书光盘里是有的但是没借到)所以自己写了一个:关于角谷猜想: 日本一位中学生发现了一个奇妙的“定理”,请角谷教授证明,而教授无能为力,于是产生角谷猜想,猜想的内容是:任意给一个自然数,若为偶数则除以2,若为奇数则乘以3加1,达到一个新的自然数,然后再按上面的法则进行演算,若干次后得到的结果必然为1。程序源码:
简单编程(五)编程验证一下“角谷猜想”
请编程验证一下“角谷猜想”:对任意的自然数,若是奇数,就对它乘以3加1;若是偶数就对它除以2;这样得到一个新数,再按上述奇数、偶数的计算规则进行计算,一直进行下去,最终将得到1。如对自然数11, 按上述规则依次得到34、17、52、26、13、40、20、10、5、16、8、4、2、1。 要求用户输入一个自然数(正整数),然后编程输出依次变换最终得到1的过程。
【C++】角谷猜想
角谷猜想的内容是:任给一个自然数,若为偶数除以2,若为奇数则除以3加1,得到一个新的自然数后按照上面的法则继续演算,若干次后得到的结果必然为1.编程验证该定律。 #include"iostream.h" #include"stdio.h" void main() { int x,temp; cout cin>>x; temp=x; while(1) { if(temp%2==0) { tem
蓝桥杯-3n+1问题(例题)
“3n+1”问题:        对于任意大于1的自然数n,若该数为偶数则将其变为原来的一半,若为奇数则将其变为3n+1。反复进行上述过程,直到结果为1时停止。这就是著名的“3n+1”问题。要求输入n,输出按“3n+1”规则变换到1所需要的数字变换次数。(n 分析:         因循环次数不确定,而且n也不是“递增”式的循环,因此可用while循环实现计算过程,用一个计数变量统计数字变换
立即提问