证明一个数学猜想遇到的问题

编程有钱人了 2008-09-22 10:06:42
在朋友的QQ空间上看到一个数学猜想,这个猜想我好像也在CSDN上见到过

任何一个不能被3整除的偶数,如488,按下列步骤:
若该数为偶数,则把它各个位数之和的平方作为新数;若该数为奇数则各个位数之和的立方作为新数,再把那个新数重复以上步骤(偶数就各位数之和平方,奇数就各位数之和立方),一步步计算下去,肯定能在9步内变为1!
如:
488(偶) 4 8 8=20 20*20=400
400(偶) 4 0 0=4 4*4=16
16(偶) 1 6=7 7*7=49
49(奇) 4 9=13 13*13*13=2197
2197(奇) 2 1 9 7=19 19*19*19=6859
6859(奇) 6 8 5 9=28 28*28*28=21952
21952(偶) 2 1 9 5 2=19 19*19=361
361(奇) 3 6 1=10 10*10*10=1000
1000(偶) 1 0 0 0=1 1*1=1
1
共9步

于是想自己证明一下

static void Main(string[] args)
{


int y = 0;
//for (int z = 1; z <120; z++)
//{
// if(z%2==0 && z%3!=0)
// {
// if (gm.cacut(z) == 0)
// {
Console.WriteLine(cacut(488,ref y)); //测试488
// }
// }

//}
Console.ReadLine();
}
public static int cacut(int n, ref int xy)
{
int y = xy;//用来计算输入的数计算的步数
int mm = 0;
int gw;//个位
int sw;//十位
int bw;//百位
int qw;//千位
int ww;//万位
int len = 1;//判断长度

len = n.ToString().Length;//得到输入的数字长度
switch (len)
{
case 1: gw = n;
if (n % 2 == 0) //如果是偶数(下同)
{
n = gw * gw;

}
else//奇数(下同)
{
n = gw * gw * gw;

}
break;
case 2: gw = n % 10; sw = n / 10;
if (n % 2 == 0)
{
n = (sw + gw) * (sw + gw);

}
else
{
n = (sw + gw) * (sw + gw) * (sw + gw);

}
break;
case 3: bw = n / 100; sw = (n / 10) % 10; gw = n % 10;
if (n % 2 == 0)
{
n = (bw + sw + gw) * (bw + sw + gw);

}
else
{
n = (bw + sw + gw) * (bw + sw + gw) * (bw + sw + gw);

}
break;
case 4: qw = n / 1000; bw = (n / 100) % 10; sw = (n / 10) % 10; gw = n % 10;
if (n % 2 == 0)
{
n = (qw + bw + sw + gw) * (qw + bw + sw + gw);

}
else
{
n = (qw + bw + sw + gw) * (qw + bw + sw + gw) * (qw + bw + sw + gw);

}
break;
case 5: ww = n / 10000; qw = (n / 1000) % 10; bw = (n / 100) % 10; sw = (n / 10) % 10; gw = n % 10;
if (n % 2 == 0)
{
n = (ww + qw + bw + sw + gw) * (ww + qw + bw + sw + gw);

}
else
{
n = (ww + qw + bw + sw + gw) * (ww + qw + bw + sw + gw) * (ww + qw + bw + sw + gw);

}
break;
}

if (n != 1)
{
++y;//如果不等于1就让其加1,统计步数
mm = cacut(n, ref y);//递归
Console.WriteLine(y);//这里输出8正常,因为当等于1的时候y就不在加了
}
return mm;

}


我想计算出某个数(如488)计算到1用的步数 但是始终不取不到
大家帮忙看看这是为什么?谁有更好的算法来分享一下啊?
帮顶给分!
...全文
108 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
homejiji 2008-09-22
  • 打赏
  • 举报
回复
长见识阿!mark
编程有钱人了 2008-09-22
  • 打赏
  • 举报
回复

static void Main(string[] args)
{

//for (int z = 1; z <1000; z++)
// {
// if(z%2==0 && z%3!=0)
// {
// if (cacut(z) > 9)
// {
// Console.WriteLine("这个数字就不行:" + z);
// }
// else
// {
// Console.WriteLine("这个虽然成立:" + z+"但不知道一个更大的数行不行?");
// }
// }

// }
int z=89765556;
if (cacut(89765556) > 9)
{
Console.WriteLine("这个数字就不行:" +z);
}
Console.ReadLine();
}

private static int cacut(int n)
{
int step = 0;
int result=n;
while (step < 10 && result>1)
{
int newshu = sum(result);
if (result % 2 == 0)
{
result = newshu * newshu;
}
else
{
result = newshu * newshu * newshu;
}
step++;
}

return step;
}

private static int sum(int xy)
{
int sum = 0;
while (xy >= 10)
{
sum += xy % 10;
xy = xy / 10;
}
return sum + xy;
}

}
编程有钱人了 2008-09-22
  • 打赏
  • 举报
回复
static void Main(string[] args)
{

//for (int z = 1; z <1000; z++)
// {
// if(z%2==0 && z%3!=0)
// {
// if (cacut(z) > 9)
// {
// Console.WriteLine("这个数字就不行:" + z);
// }
// else
// {
// Console.WriteLine("这个虽然成立:" + z+"但不知道一个更大的数行不行?");
// }
// }

// }
int z=89765556;
if (cacut(89765556) > 9)
{
Console.WriteLine("这个数字就不行:" +z);
}
Console.ReadLine();
}

private static int cacut(int n)
{
int step = 0;
int result=n;
while (step < 10 && result>1)
{
int newshu = sum(result);
if (result % 2 == 0)
{
result = newshu * newshu;
}
else
{
result = newshu * newshu * newshu;
}
step++;
}

return step;
}

private static int sum(int xy)
{
int sum = 0;
while (xy >= 10)
{
sum += xy % 10;
xy = xy / 10;
}
return sum + xy;
}

}
止戈而立 2008-09-22
  • 打赏
  • 举报
回复
我对有多少数的平方和立方值的各个位数和等于10甚至100更感兴趣。。呵呵。
yanlongwuhui 2008-09-22
  • 打赏
  • 举报
回复
挺有意思
格拉 2008-09-22
  • 打赏
  • 举报
回复
参观学习
nattystyle 2008-09-22
  • 打赏
  • 举报
回复
前排帮顶
wdgphc 2008-09-22
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20080705/16/a9070b29-c658-47bc-8807-95b1d700a69f.html

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧