最小的利克瑞尔数196
利克瑞尔数:指的是将该数与将该数各数位逆序翻转后形成的新数相加、并将此过程反复迭代后,结果永远无法是一个回文数的自然数。
回文数:一个数正读反读都一样,我们就把它叫做“回文数”。随便选一个数,不断加上把它反过来写之后得到的数,直到得出一个回文数为止。例如,所选的数是67,两步就可以得到一个回文数484:
67+76=143
143+341=484
把69变成一个回文数则需要四步:
69+96=165
165+561=726
726+627=1353
1353+3531=4884
89的“回文数之路”则特别长,要到第24步才会得到第一个回文数,8813200023188。
大家或许会想,不断地“一正一反相加”,最后总能得到一个回文数,这当然不足为奇了。事实情况也确实是这样——对于几乎所有的数,按照规则不断加下去,迟早会出现回文数。不过,196却是一个相当引人注目的例外。数学家们已经用计算机算到了3亿多位数,都没有产生过一次回文数。从196出发,究竟能否加出回文数来?196究竟特殊在哪儿?这至今仍是个谜。
回文数:一个数正读反读都一样,我们就把它叫做“回文数”。随便选一个数,不断加上把它反过来写之后得到的数,直到得出一个回文数为止。例如,所选的数是67,两步就可以得到一个回文数484:
67+76=143
143+341=484
把69变成一个回文数则需要四步:
69+96=165
165+561=726
726+627=1353
1353+3531=4884
89的“回文数之路”则特别长,要到第24步才会得到第一个回文数,8813200023188。
大家或许会想,不断地“一正一反相加”,最后总能得到一个回文数,这当然不足为奇了。事实情况也确实是这样——对于几乎所有的数,按照规则不断加下去,迟早会出现回文数。不过,196却是一个相当引人注目的例外。数学家们已经用计算机算到了3亿多位数,都没有产生过一次回文数。从196出发,究竟能否加出回文数来?196究竟特殊在哪儿?这至今仍是个谜。
代码验证:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>196算法</title>
</head>
<body>
<span> 196算法</span><br/><br/>
<input type = "text" id = "number">
<input type = "button" id = "submit" onclick = 'submit()' value ="提交">
</body>
<script type="text/javascript">
function submit(){
var count = 0; //记录数字
var value = document.getElementById('number').value;
var input_num = value; //起始数字
var newNum; //翻转后的数字
var flag = check_num(value); //标示是否是回文数
if(flag == true){
alert(input_num+'是回文数');
}else{
while(!flag){
value = parseInt(getNewNum(value.toString())) + parseInt(value); //利用value.toString()操作数组
flag = check_num(value.toString());
count++;
}
target_num = value.toString();
alert('经过了'+count+'次运算,'+input_num+'变成了回文数'+target_num);
}
}
//得到反转数
function getNewNum(value){
var num = value; //得到传来的字符串
var length = num.length; //得到字符串长度
var Num_arr = new Array(); //创建数组用来操作字符串
var newNum;
for(i = 0;i < num.length ; i++){ //循环得到字符串的反转
Num_arr[i] = num[length - 1];
length--;
}
newNum = Num_arr.join(''); //将数组转为字符串
return newNum;
}
//检验是否回文
function check_num(num){
var flag = true;
var num_length = num.length; //得到字符串长度
var limit = Math.floor(num_length / 2) ; //只需循环小于一半的次数便可判断
for( i = 0,j = num_length - 1; i <= limit ;i++,j--){
if(num[i] != num[j]){
flag = false;
break;
}
}
return flag;
}
</script>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>196算法</title>
</head>
<body>
<span> 196算法</span><br/><br/>
<input type = "text" id = "number">
<input type = "button" id = "submit" onclick = 'submit()' value ="提交">
</body>
<script type="text/javascript">
function submit(){
var count = 0; //记录数字
var value = document.getElementById('number').value;
var input_num = value; //起始数字
var newNum; //翻转后的数字
var flag = check_num(value); //标示是否是回文数
if(flag == true){
alert(input_num+'是回文数');
}else{
while(!flag){
value = parseInt(getNewNum(value.toString())) + parseInt(value); //利用value.toString()操作数组
flag = check_num(value.toString());
count++;
}
target_num = value.toString();
alert('经过了'+count+'次运算,'+input_num+'变成了回文数'+target_num);
}
}
//得到反转数
function getNewNum(value){
var num = value; //得到传来的字符串
var length = num.length; //得到字符串长度
var Num_arr = new Array(); //创建数组用来操作字符串
var newNum;
for(i = 0;i < num.length ; i++){ //循环得到字符串的反转
Num_arr[i] = num[length - 1];
length--;
}
newNum = Num_arr.join(''); //将数组转为字符串
return newNum;
}
//检验是否回文
function check_num(num){
var flag = true;
var num_length = num.length; //得到字符串长度
var limit = Math.floor(num_length / 2) ; //只需循环小于一半的次数便可判断
for( i = 0,j = num_length - 1; i <= limit ;i++,j--){
if(num[i] != num[j]){
flag = false;
break;
}
}
return flag;
}
</script>
</html>