Java 这段代码如何打印相同的素数?
此代码打印数字的素数因子。 我想知道它是如何将同一个素数打印两次的 例:45=>3.3.5Java 这段代码如何打印相同的素数?,java,Java,此代码打印数字的素数因子。 我想知道它是如何将同一个素数打印两次的 例:45=>3.3.5 // get the number for(int i = 2; i< number; i++) { while(number%i == 0) { System.out.println(i+" "); number = number/i; } } if(number >2) { System.out.println(n
// get the number
for(int i = 2; i< number; i++) {
while(number%i == 0) {
System.out.println(i+" ");
number = number/i;
}
}
if(number >2) {
System.out.println(number);
}
//获取号码
for(int i=2;i2){
系统输出打印项次(编号);
}
理解代码所做的事情的最简单/最好的方法是运行代码。您可以尝试使用调试器,但我们也可以尝试总结如下:
i = 2
nothing happens, because 45 is not divisible by 2
i = 3
the while loop iterates twice, printing 3 twice, and also setting
number = 45 -> 15 -> 5
i = 4
nothing happens, because 45 is not divisible by 4
i = 5
the while loop iterates once, printing 5 once, and setting number = 5 / 5 = 1
此时,外部
for
循环失败,因为当i=3时,i=5
和number=1
,而循环迭代两次。
在第一次迭代中,它将打印3并更新number=15的值
随着数字的更新,它将再次迭代。
在第二次迭代中,它将再次打印3并更新number=5的值
现在,(5%3==0)是不可能的,所以它不会第三次迭代 只要
i
是一个因素,内部循环就会重复这个过程。只需在一张纸上运行代码即可i=2
是一个no op,因为45
不能被2
整除。对于i=3
,while循环将执行两次,打印3
两次。然后,它将在以后为i=5
打印5
。请尝试调试it@TimBiegeleisen你为什么不把它贴出来作为答案呢?对于次要/愚蠢的问题,在评论中给出答案是否是你个人的选择?因为这是很常见的情况,我只是好奇!谢谢,谢谢你,我完全明白了。