实验06for与do~while循环---7-01 验证一个著名数学猜想
有这么一个著名的数学猜想:一个正整数n,如果是奇数就乘以3再加1,如果是偶数就将该偶数除以2,得到的新数重复刚才这个处理过程若干个次后,最终就能算到数字1。需要你做的是:编写程序看看,对于任意给定的正整数n需要经过多少次运算处理才能算到数字1。例如n为8,则需要3次;n为11,则需要14次。
输入格式:
只有一个正整数n(即待判别处理的数)。
输出格式:
输出判定过程中出现的中间数字,和最后的总次数。
例如,如果n为11应输出如下:
34
17
52
26
13
40
20
10
5
16
8
4
2
1
times=14
输入样例:
在这里给出一组输入。例如:
11
输出样例:
在这里给出相应的输出。例如:
34
17
52
26
13
40
20
10
5
16
8
4
2
1
times=14
自己写的
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int n,time=0;
scanf("%d",&n);
while(1!=n)
{
if(n&1==1)
{
n=n*3+1;
printf("%d\n",n);
}
else
{
n/=2;
printf("%d\n",n);
}
time++;
}
printf("times=%d",time);
return 0;
}
老师写的
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n, count=0;
scanf("%d", &n);
while (n!=1)
{
if (n % 2 == 0)
{
n = n / 2;
}
else
{
n = 3 * n + 1;
}
printf("%d\n", n);
count++;
}
printf("times=%d", count);
return 0;
}