输出100以内所有满足”角谷猜想”的正整数

问题遇到的现象和发生背景

码哥猜想

时间限制:1秒

占用内存: 128 M

小码哥第一次看到了” 角谷猜想”:

“对于任意一个正整数,如果是奇数,则乘3加1 ,如果是偶数,则除以2 ,得到的结果再按照上述规则重复处理,最终总能够得到1.”数学的简洁与优美让小码哥惊叹不已,小码哥大受启发,提出了”码哥猜想”:

“对于100以内(包括100)任意-个正整数 ,如果是奇数,则乘5减1 ,如果是偶数,则除以2 ,得到的结果再按照上述规则重复处理,最终总能够得到1.

很不幸,小码哥发现自己的猜想对于100以内的正整数并不是完全成立,于是小码哥想求出100以内满足自己猜想的正整数,来研究其性质。

格式

输入格式:无输入。

输出格式:输出一-行若干个用空格分隔的整数,表示100以内所有满足”码哥猜想”的正整数,从小到大输出。

用代码块功能插入代码,请勿粘贴截图

#include
int main()
{
int i,j;
for(i=1;i<100;i++)
{ j=i;
do
{
if(j%2==1)
j=j*3+1;
else if(j%2==0)
j=i/2;
}while(j!=1&&j<=10000000);
if(j==1)
{
printf("%d",i);
}
}
return 0;
}

运行结果及报错内容

超时( Time Limit Exceed )

运行时间: 1000ms

占用内存: 152KB

得分:0

Compile Successfully.

Test Point #0: Time Limit Exceed, Time = 1000 ms, Memory = 152 KB,Score = 0

Time Limit Exceed, Time = 1000 ms,Memory = 152 KB,Score = 0

我的解答思路和尝试过的方法

从1到99依次进行循环,内部是do-while循环,当j等于1或大于10^7时跳出循环,找出100以内符合角谷猜想的数。

我想要达到的结果

输入:无
输出:1 2 3 4 5 6 7 8 (后面均为满足条件的正整数)

修改了之后可以运行,但还是报错了,好像找出来的数字不对。
这道题还有个备注:1-8都满足猜想。为了方便,若在过程中某一步数字大于10的七次方即视为不满足该猜想。

img


修改之后运行成功了。

img

j=i/2;
改为
j/=2
你这j永远自增不减啊

有个错误这句j=i/2错了。是j=j/2。还有这个循环结束条件怎么提出来的?估计改了这条有可能还是超时