在 Global Verification Authority,你剛被交付了一項關鍵任務。從線上購物到安全登入,這座城市裡數不清的操作,都仰賴信用卡號碼、銀行帳號、交易代碼和追蹤編號這類數值識別碼的正確性。Luhn 演算法是一種簡單的校驗碼公式,用來協助辨識輸入錯誤的號碼。
剛才有一批識別碼送到你的桌上。它們全都必須通過 Luhn 測試,才能確認是合法的。只要有任一項沒通過,就會被標記為無效,藉此避免像是交易錯誤或帳戶驗證失敗這類問題。
你能確保這件事正確完成嗎?許多服務的完整性都取決於你喔。
判斷一個數字是否符合 Luhn 公式。
數字會以字串的形式提供。
長度為 1 或更短的字串不合法。 輸入中可以包含空格,但在檢查之前應該先把它們去掉。 其他所有非數字字元都不允許。
要檢查的號碼是 4539 3195 0343 6467。
Luhn 演算法的第一步,是從號碼的尾端開始,從右邊數來第二個數字起往左走,每隔一個數字就把它加倍。
4539 3195 0343 6467
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ (double these)
如果某個數字加倍後的結果大於 9,就從結果中減去 9。 最後會得到:
8569 6195 0383 3437
最後,把所有數字相加。 如果總和能被 10 整除,原本的號碼就是有效的。
8 + 5 + 6 + 9 + 6 + 1 + 9 + 5 + 0 + 3 + 8 + 3 + 3 + 4 + 3 + 7 = 80
80 能被 10 整除,所以號碼 4539 3195 0343 6467 是有效的!
要檢查的號碼是 066 123 478。
我們從號碼的尾端開始,從右邊數來第二個數字起往左走,每隔一個數字就把它加倍。
066 123 478
↑ ↑ ↑ ↑ (double these)
如果某個數字加倍後的結果大於 9,就從結果中減去 9。 最後會得到:
036 226 458
我們把數字相加:
0 + 3 + 6 + 2 + 2 + 6 + 4 + 5 + 8 = 36
36 不能被 10 整除,所以號碼 066 123 478 不是有效的!