一、什么是水仙花數
水仙花數也稱為超完全數字不變數、自冪數、阿姆斯壯數、阿姆是特朗數。
水仙花數是指一個三位數,每個位數上數字的3次冪之和等於數字它本身。
水仙花數是自冪數的一種,三位的三次自冪數才叫做水仙花數;三位的水仙花數總夠有4個:153,370,371,470
js寫出水仙花數思路分析:
1、使用for循環查找遍歷 從100到 999的所有三位數;
2、判斷遍歷的數字是否是各個位數的數字的3次冪數之和是否等於數字本身,如果是即為水仙花數,則在控制台輸出(如何選取各個位數)
(1)選取個位數 模以10,得到余數即為個位數
(2)選取十位數 i除以10,再對結果進行取整,取整后得到一個兩位數的整數。用這個結果對10取模,得到十位數
(3)選取百位數 三位數除以100,再取整,就得到了百位數。
- 一位自冪數:獨身數
- 兩位自冪數:沒有
- 三位自冪數:水仙花數
- 四位自冪數:四葉玫瑰數
- 五位自冪數:五角星數
- 六位自冪數:六合數
- 七位自冪數:北斗七星數
- 八位自冪數:八仙數
- 九位自冪數:九九重陽數
- 十位自冪數:十全十美數
四葉玫瑰數剩下的我們以此類推就好!
<script type="text/javascript"> console.time("開始時間") for(var i = 1000;i<=9999;i++){ var gw = i%10; var sw = parseInt(i/10)%10; var bw = parseInt(i/100)%10; var qw = parseInt(i/1000); if(i == Math.pow(gw,4)+Math.pow(sw,4)+Math.pow(bw,4)+Math.pow(qw,4)){ console.log(i);} } console.timeEnd("開始時間") </script>
但是遇到了九九重陽數就會有一些阻礙
console.time('九九重陽數'); var a=[Math.pow(0,9),Math.pow(1,9),Math.pow(2,9),Math.pow(3,9),Math.pow(4,9),Math.pow(5,9),Math.pow(6,9),Math.pow(7,9),Math.pow(8,9),Math.pow(9,9)] for(var i = 100000000;i<=999999999;i++){ var sum=0; var n=i; for (var j = 9; j>0&&sum<=i; j--) { sum += a[n % 10]; n=parseInt(n/10); } if(i==sum){ console.log(i); } } console.timeEnd('九九重陽數');
console.time()定義和用法!
console.time() 方法是作為計算器的起始方法。
該方法一般用於測試程序執行的時長。
console.timeEnd() 方法為計算器的結束方法,並將執行時長顯示在控制台。
如果一個頁面有多個地方需要使用到計算器,可以添加標簽參數來設置。
提示: 在測試該方法的過程中,控制台需要可見 (瀏覽器按下 F12 打開控制台)。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <h1>JavaScript console.time() 方法</h1> <p>按下 F12 查看控制台信息。</p> <script> console.time(); for (i = 0; i < 100000; i++) { // 代碼部分 } console.timeEnd(); </script> <p>計算循環十萬次所需要的毫秒數。</p> <p><strong>注意:</strong> console.time() 方法是計算器的起始方法,結束方法為 console.timeEnd() ,該方法執行后會將執行時長顯示在控制台上。</p> </body> </html>
上面需要用到以下這些方法:
Math.pow(2,53) // => 9007199254740992: 2 的 53次冪
Math.round(.6) // => 1.0: 四舍五入
Math.ceil(.6) // => 1.0: 向上求整
Math.floor(.6) // => 0.0: 向下求整
Math.abs(-5)// => 5: 求絕對值
Math.max(x,y,z) // 返回最大值
Math.min(x,y,z)// 返回最小值
Math.random() // 生成一個大於等於0小於1.0的偽隨機數
Math.PI // π: 圓周率
Math.E // e: 自然對數的底數
Math.sqrt(3)// 3的平方根
Math.pow(3, 1/3)// 3的立方根
Math.sin(0) // 三角函數: 還有Math.cos, Math.atan等
Math.log(10)// 10的自然對數
Math.log(100)/Math.LN10 // 以10為底100的對數
Math.log(512)/Math.LN2// 以2為底512的對數
Math.exp(3)// e的三次冪
JavaScript parseInt() 函數
定義和用法
parseInt() 函數可解析一個字符串,並返回一個整數。
當參數 radix 的值為 0,或沒有設置該參數時,parseInt() 會根據 string 來判斷數字的基數。
當忽略參數 radix , JavaScript 默認數字的基數如下:
- 如果 string 以 "0x" 開頭,parseInt() 會把 string 的其余部分解析為十六進制的整數。
- 如果 string 以 0 開頭,那么 ECMAScript v3 允許 parseInt() 的一個實現把其后的字符解析為八進制或十六進制的數字。
- 如果 string 以 1 ~ 9 的數字開頭,parseInt() 將把它解析為十進制的整數。
語法
參數 | 描述 |
---|---|
string | 必需。要被解析的字符串。 |
radix | 可選。表示要解析的數字的基數。該值介於 2 ~ 36 之間。 |
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<script>
document.write(parseInt("10") + "<br>") ;
document.write(parseInt("10.33") + "<br>");
document.write(parseInt("34 45 66") + "<br>");
document.write(parseInt(" 60 ") + "<br>");
document.write(parseInt("40 years") + "<br>");
document.write(parseInt("He was 40") + "<br>");
document.write("<br>");
document.write(parseInt("10",10)+ "<br>");
document.write(parseInt("010")+ "<br>");
document.write(parseInt("10",8)+ "<br>");
document.write(parseInt("0x10")+ "<br>");
document.write(parseInt("10",16)+ "<br>");
</script>
</body>
</html>
效果圖:
JavaScript parseFloat() 函數
提示和注釋
注意: 字符串中只返回第一個數字。
注意: 開頭和結尾的空格是允許的。
注意: 如果字符串的第一個字符不能被轉換為數字,那么 parseFloat() 會返回 NaN。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<script>
document.write(parseFloat("10") + "<br>");
document.write(parseFloat("10.00") + "<br>");
document.write(parseFloat("10.33") + "<br>");
document.write(parseFloat("34 45 66") + "<br>");
document.write(parseFloat(" 60 ") + "<br>");
document.write(parseFloat("40 years") + "<br>");
document.write(parseFloat("He was 40") + "<br>");
</script>
</body>
</html>
效果如下: