Michael
Michael

Reputation: 61

Finding factors of integers

I tried to create a simple program that finds all divisors of a number. I was instructed to store every divisor into a string and use a while loop. I don't know why, but my program does not run. It compiles without errors, but gives no output.

import static java.lang.System.*;

public class Divisors
{
    public static String getDivisors( int number )
    {
        String divisors="";
        int n=1;
        while(n < number)
        {
            if (number % n==0)
            {
                divisors +=" "+ n;
            }
        }
        return number+ " has divisors:"+ divisors;
    }
}

Here is my tester class:

import static java.lang.System.*;

public class Lab09f
{
    public static void main( String args[] )
    {
        Divisors d = new Divisors();

        out.println(d.getDivisors(10));
        out.println(d.getDivisors(45));
        out.println(d.getDivisors(14));
        out.println(d.getDivisors(1024));
        out.println(d.getDivisors(1245));
        out.println(d.getDivisors(33));
        out.println(d.getDivisors(65535));
    }
}

Upvotes: 0

Views: 452

Answers (2)

Maxqueue
Maxqueue

Reputation: 2444

You need to increment n:

public class Divisors
{
    public static String getDivisors( int number )
    {
        String divisors="";
        int n=1;
        while(n < number)
        {
            if (number % n==0)
            {
                divisors +=" "+ n++;
            }
        }
        return number+ " has divisors:"+ divisors;
    }
}

Upvotes: 0

dave
dave

Reputation: 124

while(n < number)
    {
        if (number % n==0)
        {
            divisors +=" "+ n;
        }
        n++;
    }
    return number+ " has divisors:"+ divisors;
}

you were not adding to your n so was looping forever

Upvotes: 4

Related Questions