水仙花數


一、什么是水仙花數

水仙花數也稱為超完全數字不變數、自冪數、阿姆斯壯數、阿姆是特朗數。

水仙花數是指一個三位數,每個位數上數字的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() 將把它解析為十進制的整數。

語法

parseInt(string, radix)

 

 

參數 描述
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>

 

效果如下:

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM