Returns the sum of all divisors of the given number. - Java java.lang

Java examples for java.lang:Math Number

Description

Returns the sum of all divisors of the given number.

Demo Code

/**/*from  w  w w  .  ja  v a  2  s. com*/
 *
 * maer - Solutions to problems of Project Euler
 * Copyright (C) 2011, Sandeep Gupta
 * http://www.sangupta.com/projects/maer
 *
 * The file is licensed under the the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */
//package com.java2s;

public class Main {
    /**
     * Returns the sum of all divisors of the given <code>number</code>.
     * 
     * @param divSum
     * @return
     */
    public static long sumOfDivisors(long num) {
        long sum = 0;
        long root = (long) Math.sqrt((double) num);

        if (root * root == num) {
            // case that n is a perfect square
            sum += root;
            root -= 1;
        }

        if (isOdd(num)) {
            for (int i = 1; i <= root; i += 2) {
                if (num % i == 0)
                    sum += i + num / i;
            }
        } else {
            // number is even
            for (int i = 1; i <= root; i += 1) {
                if (num % i == 0)
                    sum += i + num / i;
            }
        }

        return sum;
    }

    /**
     * Tests whether the given number is odd or not, uses bit arithmetic.
     * 
     * @param number
     * @return
     */
    public static boolean isOdd(long number) {
        return (number & 1) == 1;
    }
}

Related Tutorials