我正在尝试为我的AP计算机科学课程制作一个Prime Factorization Java代码而且我被卡住了

时间:2016-10-04 20:39:05

标签: java

public boolean checkPrime( int number )
{
    int divisor = 2;
    int remainder = 1; 
    while(number != divisor)
    {
        remainder = number % divisor ;
        if( remainder == 0)
        {
            return false ;
        }
        else
        {
            divisor ++ ;
        }

    }
    return true ;  
}


public void primeFactors ( int num )
{
    int i = 2 ;
    while(  i <= num)

    {

        if( num % i == 0)
        {
            boolean isPrime = checkPrime( i );
            checkPrime( i ) ;
            if( isPrime )
            {
                System.out.print("," + i);
                i++;
            }
            else
            {
                i++;
            }
        }
        else
        {
            i++ ;
        }
    }
}

}

我遇到的问题是我无法将其打印出来,而不是每个数字中的一个。例如,如果输入16,它将只给你一个2而不是4 2。我正在使用check prime,因为我的教授正在制作我们,我知道你可以在没有它的情况下完成这个程序。我是新来的,我非常感谢任何建议!

1 个答案:

答案 0 :(得分:0)

  

我遇到的问题是我无法打印出比每个号码更多的数据。

这是因为打印后i++;。你不应该继续下一个潜在的除数,而应该保持同一个除数,直到可分性消失为止。

不应该递增除数,而应将其除以num。例如,如果您发现num=24可以被2整除,请打印2,然后制作num=12。下一次迭代将再次打印2,并生成num=6。以下迭代将最后一次打印2,并生成num=3。这时您的算法可以转到下一个除数,然后打印3