我正试图为我的AP计算机科学课做一个质因数分解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素数是因为我的教授让我们,我知道你们不用它也能做这个程序。我是新来的,我非常感谢任何建议!

我遇到的问题是我不能让它打印出每个数字中的一个以上。

这是因为印刷后的i++;。而不是移动到下一个可能的除数,你应该停留在同一个除数上,直到可整除性消失。

与其增加除数,不如从num中除去它。例如,如果您看到num=24可以被2整除,则打印2,并制作num=12。下一次迭代将再次打印2,并生成num=6。下面的迭代将最后一次打印2,并生成num=3。这时你的算法可以移动到下一个除数,并打印3

最新更新