iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 7
1
自我挑戰組

30天找回寫程式手感計劃!!!系列 第 7

Day7 - 承先啟後:邁向網頁排版的關卡去吧~

  • 分享至 

  • xImage
  •  

我想剛好這禮拜都在寫簡單程式的關卡小小暖身,
也是時候該往下個階段邁進了。
這邊來快速 Review 一下這週寫過的簡單程式:

  • 超級整除日
  • 世界完全對稱日
  • 完全數
  • 佩服數

這次 30 天鐵人賽挑戰,
除了完賽,還有一個很重要的目標──
完成拖欠一年多的 JavaScript 最終作業!
(編按:有大大建議小的應該要說明一下 JavaScript 最終作業 是啥咪,
這是指 六角學院 所開設的「JavaScript 入門篇 - 學徒的試煉」課程的最終作業,
我拖了一年多還沒繳交出去orz)

要完成 JavaScript 最終作業,
除了 JavaScript 的語法外,
排版也是不可或缺的,
所以我想是時候該來複習排版了!

因此挑戰二週目就定調為網頁排版設計週,
要複習的概念有:

  • 區塊元素(block) / 行內元素(inline)
  • margin / padding
  • 盒模型 (box-sizing)
  • 當然還有最重要的 Flex !!!!! (主軸、交錯軸的對齊方式)

然後複習完再到「Flex 修煉時光屋」練功驗證以上的複習概念是不是已經都吸收了。
(編按:「Flex 修煉時光屋」一樣是六角學院課程「使用 HTML、CSS 開發一個網站」中洧杰老師所設立的其中一個 DLC XD)

同場加映:修改一下昨天的程式

不過如果今天這篇只有交代下週的規劃好像有點說不過去,
來改一下昨天文章說的XD
這邊就不像前幾天文章把詳細過程記錄下來,
但有將詳細說明寫在程式註解。

// let basicNum = 66;
let factorSum; // 因數總和
let factorArray = []; // 因數陣列
let compareNum; // (因數總和 - 數字本身)/2

let admirableOddNumArray = []; // 奇佩服數
let admirableEvenNumArray = []; // 偶佩服數
let countTimes_1 = 0; // 前半段計算次數
let countTimes_2 = 0; // 後半段計算次數

for ( let basicNum=2; basicNum<1000; basicNum++){
    factorSum = 1;
    factorArray = [1,];
    let endNum = basicNum;
    for ( let i=2; i<endNum; i++ ){
        countTimes_1++;
        if ( basicNum%i === 0 ){
            factorArray.push(i);
            factorSum += i;

            if ( i !== basicNum/i ){
                factorArray.push(basicNum/i);
                factorSum += basicNum/i;
            }
            endNum = basicNum/i;
        }
    }

    // 因為要找到是否有數字是因數總和(不包含自己)-某因數*2=數字本身
    // 例如 12 因數總和為 16
    // ( 16 - 12 ) / 2 = 2 為 12 的因數之一,表示 12 為佩服數
    compareNum = (factorSum - basicNum)/2; // (因數總和 - 數字本身)/2
    if ( factorArray.indexOf(compareNum) >=0 ){ // indexOf 找陣列裡的元素並回傳位置(沒有就回傳-1)
        if ( basicNum%2 !== 0 ){
            console.log(`${basicNum} 是奇佩服數!`);
            admirableOddNumArray.push(basicNum);
        } else{
            console.log(`${basicNum} 是偶佩服數!`);
            admirableEvenNumArray.push(basicNum);
        }

    }
}

console.log(`奇佩服數共有 ${admirableOddNumArray.length} 個`);
console.log(`偶佩服數共有 ${admirableEvenNumArray.length} 個`);
console.log(`前半段計算次數 ${countTimes_1} 次`);
console.log(`後半段計算次數 ${countTimes_2} 次`);

https://ithelp.ithome.com.tw/upload/images/20200913/201298737nv7Y1msn5.png
耶~我終於改成一個迴圈完成佩服數的判斷~ (不含外圈跑數字的迴圈)
迴圈找出因數存在陣列,並計算因數總和,
然後只要用 indexOf 找出是否有因數可以達成佩服數條件就好~

本日打完收工,大家第二週見:D


上一篇
Day6 - 令人敬佩的數字~佩服數 ( Admirable Numbers )
下一篇
Day8 - 那些有關網頁排版的大小事(入門篇)
系列文
30天找回寫程式手感計劃!!!36
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言