Lychrel Numbers Javascript?
Lychrel Numbers Javascript?
我被这个问题困住了:https://docs.google.com/document/d/1NNgUZtB5wy89DaROVNMy22Hfjt3gbwlq9qkMszU8Bu8/edit?usp=sharing^
的联系如果你不相信这个链接,问题是:
循环:Lychrel数
大型程序实践
如果我们取47,把数字倒过来加起来,我们得到47+74 = 121,这是一个回文数。这意味着当数字倒过来时,数字保持不变。并不是所有的数字都能这么快地生成回文。例如:349+943 = 12921292+2921 = 42134213 + 3124 = 7337因此,对于数字349,需要三次迭代才能得到一个回文。
虽然还没有人证明它,但人们认为有些数字,如196,无论进行多少次迭代都不会产生回文。这样的数字被称为Lychrel数。令人惊讶的是,有些回文数本身就是Lychrel数;第一个例子是4994。
写一个程序,读取一个整数,如果输入是一个Lychrel数,输出YES,否则输出NO。此外,如果输入的数字不是Lychrel数,则程序必须输出到达回文数和最终回文数所需的迭代次数。通过强制用户输入低于10000,您可以假设该数字要么在50次迭代中变成回文,要么是一个Lychrel数。
示例程序执行:
输入:349
输出:NO 3 7337
输入:196
输出:是的
输入:89
输出:NO 24 8813200023188
输入:592
输出是的
这是我目前所知道的。我不知道我该怎么做才能成功。我是新的堆栈溢出,所以如果我做错了什么,请让我知道。谢谢!
<!doctype html>
<html>
<head></head>
<body>
Number: <input type='text' id='number' name='number' placeholder='1234'/> </br>
Re-enter the same number: <input type='text' id='number2' name='number2' placeholder='1234'/>
<button onclick='convert()'>Convert</button></br>
<div id='result'></div>
<script>
function convert(){
var originalNum=parseInt(document.getElementById('number').value);
var newNum=parseInt(document.getElementById('number2').value);
var x;
var total=originalNum;
var palindrome=false;
for (x=0; x<50; x++) {
newNum==newNum.split("").reverse().join();
total+=newNum;
if (total==total.split().reverse().join()){
palindrome=true;
break;
}
}
if (palindrome)
document.getElementById('result').innerHTML=("NO");
else
document.getElementById('result').innerHTML=("YES");
}
</script>
</body>
</html>
也许有更好的方法,但这是可行的。
您遇到的主要问题是JavaScript根据变量的类型对+
操作符做不同的事情。对于字符串,它将它们连接起来,但对于数字,它将它们相加。这尤其令人困惑,因为不同操作符的行为是不一致的。即,它将计算"5" == 5
为真(即,它将==
的字符串转换为数字,而不是+
)
同样适用于split和join。当不带参数使用时,它们有不同的行为,尽管它们看起来是相反的。
function lychrelTest() {
var originalNum=document.getElementById('number').value;
if (isNaN(parseInt(originalNum))) {
alert('"'+originalNum+'" is not a number');
return;
}
var result = document.getElementById('result');
result.innerHTML = "";
var current=originalNum;
var palindrome=false;
var x;
for (x=0; x<50; x++) {
var rev = current.split("").reverse().join("");
var attempt = current + "+" + rev;
current = (parseInt(current) + parseInt(rev)).toString();
result.innerHTML += attempt + "="+ current + "<br />";
if (current == current.split("").reverse().join("")) {
palindrome=true;
break;
}
}
result.innerHTML+=(palindrome?("NO: "+current+" after "+(x+1)+" iterations"):"YES");
}
<body>
Number: <input type='text' id='number' name='number' placeholder='1234'/>
<button onclick='lychrelTest()'>Test</button></br>
<div id='result'></div>
</body>
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 使用php或javascript从facebook相册URL中删除多余的部分
- 正在添加'X'按钮,在文本字段旁边使用javascript
- 如何在JavaScript中将字符串转换为函数引用
- 模糊事件的Javascript测试
- Javascript更改图标
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 如何使用WCF服务和javascript表单post上传.doc文件
- javascript结合了数组和字典
- 这是什么 ==- javascript 运算符
- 从javascript创建一个列表
- JavaScript for Random Numbers with Recursion
- Javascript numbers and NaN
- Prime Numbers JavaScript
- Javascript leading numbers
- Lychrel Numbers Javascript?
- 'e' in javascript numbers
- Random Numbers JavaScript