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,因为我的教授正在制作我们,我知道你可以在没有它的情况下完成这个程序。我是新来的,我非常感谢任何建议!
答案 0 :(得分:0)
我遇到的问题是我无法打印出比每个号码更多的数据。
这是因为打印后i++;
。你不应该继续下一个潜在的除数,而应该保持同一个除数,直到可分性消失为止。
不应该递增除数,而应将其除以num
。例如,如果您发现num=24
可以被2
整除,请打印2
,然后制作num=12
。下一次迭代将再次打印2
,并生成num=6
。以下迭代将最后一次打印2
,并生成num=3
。这时您的算法可以转到下一个除数,然后打印3
。