1. 程式人生 > >js演算法集合(一) 水仙花數 及拓展(自冪數的判斷)

js演算法集合(一) 水仙花數 及拓展(自冪數的判斷)

  1、驗證一個數是否為水仙花數     ①要寫水仙花數的演算法,我們首先來了解一下什麼是水仙花數,水仙花數是指一個 3位正整數 ,它的每個位上的數字的 3次冪之和等於它本身。(例如:1^3 + 5^3+ 3^3 = 153);     ②瞭解了什麼是水仙花數我們就開始分析該怎麼下手。通過定義來看我們首先要把每一位數都取出來,然後通過驗證等式是否成立來找出水仙花數;     ③那麼怎麼去取到一個三位數的每一位呢,很簡單,還是拿153來做例子吧,153%10取餘為1將個位取出來,然後153%100取餘,然後除以10取整,獲得十位,153/100取整獲得百位數;     ④拿到了三位數怎麼去判斷呢,通過if判斷語句來判斷1^3 + 5^3+ 3^3 = 153是否成立,成立打印出來。我們先寫一個判斷水仙花數的程式碼:        複製程式碼
 1         while (true){
 2         var num=Number(prompt('請輸入一個三位數'));
 3          if(num<1000&num>=100){
 4             var a=num%10;                  //個位數
 5             var b=parseInt(num%100/10);    //十位數
 6             var c=parseInt(num/100);       //百位數
 7             }else {
 8              alert('輸入錯誤;');
 9
continue; 10 } 11 if(num==a*a*a+b*b*b+c*c*c){ 12 alert(num+"是水仙花數"); 13 break; 14 }else { 15 alert(num+"不是是水仙花數"); 16 break; 17 } 18 }
複製程式碼

  2、打印出所有的水仙花數   

    ①我們已經知道了怎麼去判斷一個數是否是水仙花數,那麼怎麼去列印所有的水仙花數呢,第一個想到的一定是迴圈。

    ②既然水仙花數是一個三位數,那麼我們只要把所有的三位數判斷一下就可以了,話不多說,看程式碼:

複製程式碼
1  document.write('水仙花數有:')
2          for(var num=100;num<1000;num++){
3             var a=num%10;                  //個位數
4             var b=parseInt(num%100/10);    //十位數
5             var c=parseInt(num/100);       //百位數
6             if(num==a*a*a+b*b*b+c*c*c){
7                document.write(num+',')
8             }
9         }
複製程式碼

   3、自冪數的演算法,我們把水仙花數拓展一下,來做一做自冪數的演算法;

    ①首先還是先了解一下什麼是自冪數,自冪數是指一個 n 位正整數 ( n≥3 ),它的每個位上的數字的 n 次冪之和等於它本身。(例如:1^3 + 5^3+ 3^3 = 153);

    ②水仙花數只是自冪數的一部分,從水仙花數拓展,判斷一個數是否是自冪數,首先要判斷它是一個幾位數

    ③然後取到數的每一位,來進行判斷,以1634為例,具體的請看程式碼註釋:

複製程式碼
 1    while (true) {
 2             var num = Number(prompt('請輸入一個大於100的數'));
 3             if (num >= 100 && parseFloat(num) == parseInt(num)) {
 4                 var i = 100;
 5                 var count = 0, sum = 0, a;
 6                 /*判斷num是幾位數*/
 7                 while (true) {
 8                     if (num / i >= 1) {
 9                         i *= 10;
10                         count++;      //count = 1;時,為3位數,2時為四位數;   以1634為例:count=2
11                     } else {
12                         i /= 10;         //進到這裡時num<i,除以10跟num同位數;  以1634為例:i=1000
13                         break;
14                     }
15                 }
             /*取到每一位並計算每位數幾次冪之和*/
16                 while (i >= 1) {
17                     var b = 1;
18                     a = parseInt(num % (i * 10) / i);      //取到num的每一位,  取千位為 1634/1000取整; 百位:1634%1000/100取整  十位:1634%100/10取整  個位1634%10;
                                     //百位和十位的規律都是   1634%(i*10)/i取整;同時對千位和個位進行試驗,1634%10000=1634;1634%10/1;依舊成立
19                     for (var j = 1; j <= count + 2; j++) {
20                         b *= a;                       //根據位數,來決定每位數的幾次冪
21                     }
22                     sum += b;                         //對每位數的幾次冪進行求和;
23                     i/=10;                              //更新迴圈變數取下一位
24                 }
             /*判斷是否為自冪數*/
25                 if (num == sum) {
26                     alert(num + "是自冪數");
27                     break;
28                 } else {
29                     alert(num + "不是是自冪數");
30                     break;
31                 }
32             } else {
33                 alert('輸入錯誤;');
34                 continue;
35             }
36         }
複製程式碼

相關推薦

js演算法集合 水仙花 拓展判斷

  1、驗證一個數是否為水仙花數     ①要寫水仙花數的演算法,我們首先來了解一下什麼是水仙花數,水仙花數是指一個 3位正整數 ,它的每個位上的數字的 3次冪之和等於它本身。(例如:1^3 + 5^3+ 3^3 = 153);     ②瞭解了什麼是水仙花數我們就開始分析

水仙花

程式碼: bool narcissistic(int number) { int answer = 0, digit = 0; for (int otherNumber = number; otherNumber > 0; otherNumber /= 10) dig

JS高階---原型鏈看就懂,但18歲以下請繞道

    1)小明是小明媽生的,小狗是小狗媽生的。小明和小狗都是物件例項,而小明媽和小狗媽就是原型。原型也是物件,叫原型物件。      2)小明媽和小明爸啪啪啪能生出一堆小明明、小狗媽和小狗爸啪啪啪能生出一堆小狗狗,啪啪啪就是建構函式,俗稱造人或造狗。      3)小明媽

JS元件系列——又款MVVM元件:Vue:30分鐘搞定前端增刪改查

正文 前言:關於Vue框架,好幾個月之前就聽說過,瞭解一項新技術之後,總是處於觀望狀態,一直在猶豫要不要系統學習下。正好最近有點空,就去官網瞭解了下,看上去還不錯的一個元件,就抽空研究了下。最近園子裡vue也確實挺火,各種入門博文眼花繚亂,博主也不敢說寫

JS元件系列——又款MVVM元件:Vue二:構建自己的Vue元件

前言:轉眼距離上篇 JS元件系列——又一款MVVM元件:Vue(一:30分鐘搞定前端增刪改查) 已有好幾個月了,今天打算將它撿起來,發現好久不用,Vue相關技術點都生疏不少。經過這幾個月的時間,Vue的發展也是異常迅猛,不過這好像和博主都沒什麼太大的關係,博主還是老老實實研究自己的技術吧。技術之路還很長,且行

在線枚舉內核模塊函地址win64位

code \n fff generic ade inf har context sap #include <Windows.h> #include <stdio.h> #include <string> #include <psap

Http協議請求響應模型次請求的生命週期或簡單的軟體分層

場景:登入 1、客戶端發起請求到api介面層 1.1使用者在客戶端填寫使用者名稱和密碼,點選登入,傳送請求 2、api接收到客戶端發起的使用者請求 2.1 api對業務邏輯進行驗證 2.1.1 驗證使用者名稱和密碼是否合法 比如:使用者名稱要求必須為真實手機號碼   11位

C語言版連結串列——實現單向連結串列建立、插入、刪除等簡單操作包含個人理解說明註釋,新手跟著寫程式碼

我學習了幾天資料結構,今天下午自己寫了一個單向連結串列的程式。我也是新手,所以剛開始學習資料結構的菜鳥們(有大牛們能屈尊看一看,也是我的榮幸)可以和我一起共同學習、討論,當然也很高興能指出我的錯誤,因為這是我們一起成長的過程。本程式碼包含我在寫程式時的一些個人理解的說

Go語言演算法水仙花

判斷水仙花數 func IsNarcissistic(n int) bool { //153 a := float64(n / 100) b := float64(n % 100 / 10) c := float64(n % 10) return int(math.Pow

ElasticSearch搜尋引擎:es安裝增刪改

ElasticSearch下載地址:https://www.elastic.co/cn/downloads/elasticsearch es是一個使用java編寫的開源專案,所以需要jdk環境支援(且jdk版本須在1.8以上),安裝方式簡單粗暴,通過上方地址下載完壓縮包後直接解壓,進入bin目錄

工廠模式:封裝物件的建立、在基類中定義一個靜態成員函式

當我們發現需要新增新的型別到一個系統中時,最明智的首要步驟就是用多型機制為這些新型別建立一個共同的介面。 用這種方法可以將系統中多餘的程式碼與新新增的特定型別的程式碼分開。新型別的新增並不會攪亂已存在的程式碼...或者至少看上去如此。 起初它似乎只需要在繼承新類的地方修改程

小蘿貝控機大師工具推薦款在PC就能控制手機介面的工具

 在一次寫部落格的過程中,要擷取手機app上的幾張圖片,然後貼上到部落格裡面去,不瞭解這個工具的時候,我就從手機上截圖(使用其他的截圖app或者使用手機自己的截圖功能),然後再傳送到電腦上,然後再放到博文中,覺得很繁瑣,要是有一個能夠與手機互動的PC端工具那不就很方便了麼

深入淺出Mybatis系列---TypeHandler簡介配置mybatis原始碼篇

上篇文章《深入淺出Mybatis系列(四)---配置詳解之typeAliases別名(mybatis原始碼篇)》為大家介紹了mybatis中別名的使用,以及其原始碼。本篇將為大家介紹TypeHandler, 並簡單分析其原始碼。 Mybatis中的TypeHandler是什麼?   無論是 My

一起Talk Android吧第一百回:Android中使用定義控制元件

各位看官們,大家好,上一回中咱們說的是Android中使用自定義佈局的例子,這一回說的例子是Android中使用自定義控制元件。閒話休提,言歸正轉。讓我們一起Talk Android吧! 看官們,我們在上一回中通過自定義佈局巧妙地實現了分隔線,不過這個分隔線中看

Django框架十六:上傳圖片到定義目錄下

如何將圖片上傳到自定義目錄下 upload_to: 在根目錄下(MEDIA_ROOT)要生成的目錄 MEDIA_ROOT: 只要上傳圖片,肯定要設定,用於指定圖片上傳的根目錄。可以設定在static下(static目錄的搜尋路徑,已經通過STATICFILES_

iOS 調起地圖App進行導航百度,高德,系統帶高德URL API方式

在開發中需要用到地圖。有兩種方法,一種是匯入地圖 (百度,高德)地圖 SDK,一種是使用調起 客戶端。 但是需要用到一些高階功能的時候,如果使用 SDK 開發,就是一件折磨人的事情。 SDK 還是不如直接使用他們原生的 APP 來的好! 以我在開發中使用導航功能為例,我就沒有使用 SDK

Machine LearningStanford| 斯坦福大學機器學習筆記--第二週1.多元線性迴歸多元線性迴歸的梯度下降

一.Multivariate Linear regression(多元線性迴歸) 現在起將開始介紹一種新的更為有效的線性迴歸形式。這種形式適用於多個變數或者多特徵量的情況。 在之前學習過的線性迴歸中

南京工程學院 資料庫複習資料庫系統概論複習 資料庫原理與應用樣題

一.資料庫系統概論1.1    百度文庫 複習文件(需下載券)《資料庫系統概論》(王珊.第五版)★第一章   緒論v 本章內容:資料庫系統概述、資料模型、資料庫系統結構v 本章主要考點: 資料、資料庫、★資料庫管理系統的概念、概念模型、★ER圖、三種資料模型、資料庫的三級模式

UFLDL教程筆記練習答案四建立分類用深度學習---棧式編碼神經網路

此次主要由自我學習過度到深度學習,簡單記錄如下: (1)深度學習比淺層網路學習對特徵具有更優異的表達能力和緊密簡潔的表達了比淺層網路大的多的函式集合。 (2)將傳統的淺層神經網路進行擴充套件會存在資料獲取、區域性最值和梯度彌散的缺點。 (3)棧式自編碼神經網路是由多層稀疏自

08r2活動目錄遷移升級2012r2--主域控升級DHCP遷移,目標系統準備

域服務 size roc cda png 控制 ESS .com shadow 接前面幾篇文章,已經完成輔助域控的升級遷移以及證書角色的遷移,接下來,介紹主域控及DHCP遷移,首先,準備目標系統。目標系統加入域添加活動目錄域服務角色 完成域服務角色安裝 將PDC提升為輔助域