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
。