題目描述

一個Java介面中,可以包含方法的簽名和欄位,介面可以被用來達成多型的概念。這個題目會讓您練習介面的相關知識。



您有一個AdvancedArithmetic介面,他包含了一個「public abstract int divisorSum(int n)」方法。您必須再寫一個MyCalculator類別去實作這個介面。

divisorSum方法只能輸入一個整數,找出這個整數的所有因數,並將它們加總之後把加總結果回傳。舉例來說,6的因數有1, 2, 3, 6,所以divisorSum方法計算後會回傳12。傳入的整數n的最大值為1000。

原題網址

https://www.hackerrank.com/challenges/java-interface

範例輸入

6

範例輸出

I implemented: AdvancedArithmetic
12

解題概念

如果n為1,直接回傳1;如果n小於1,回傳0。

首先先計算根號n的數,因為n的因數,除了自己本身外,其他的因數必定小於等於根號n。接著從2開始到根號n,逐一尋找可以整除n的數字,並將這些數字加總後,再加上n + 1之後回傳。

參考答案