Java 项目Euler-3素因子除法中的if vs while循环
今天我用投影仪练习我的编码测试。在进行主要因素划分时,我偶然发现了一些奇怪的东西。以下是相关代码(Java 项目Euler-3素因子除法中的if vs while循环,java,if-statement,while-loop,primes,prime-factoring,Java,If Statement,While Loop,Primes,Prime Factoring,今天我用投影仪练习我的编码测试。在进行主要因素划分时,我偶然发现了一些奇怪的东西。以下是相关代码(res是一个数组列表): 区别在于: 如果使用If,则每个数字只测试一次。因此,如果你能拔出2,你只能尝试一次。下一个数字是4,虽然它不是素数。 这同样适用于5个国家。25 如果在期间使用,则测试每个数字,直到知道它不再在要测试的数字中 区别在于: 如果使用If,则每个数字只测试一次。因此,如果你能拔出2,你只能尝试一次。下一个数字是4,虽然它不是素数。 这同样适用于5个国家。二十五, 如果在期
res
是一个数组列表):
区别在于:
- 如果使用
,则每个数字只测试一次。因此,如果你能拔出2,你只能尝试一次。下一个数字是4,虽然它不是素数。 这同样适用于5个国家。25If
- 如果在期间使用
,则测试每个数字,直到知道它不再在要测试的数字中
- 如果使用
,则每个数字只测试一次。因此,如果你能拔出2,你只能尝试一次。下一个数字是4,虽然它不是素数。 这同样适用于5个国家。二十五,If
- 如果在期间使用
,则测试每个数字,直到知道它不再在要测试的数字中
- 您也可以将其更改为
for (int x = 2 ; x <= n/x ; ) {
if (n % x == 0) {
System.out.println("Prime factor: " + x);
res.add(x);
n = n / x;
}
else {
x++; // increment moved here
}
}
if (n > 1) {
System.out.println("Prime factor: " + n);
res.add(n);
}
for(int x=2;x 1){
System.out.println(“素因子:+n”);
决议增补(n);
}
我还更改了终止条件,以使其在
n
的最大素因子本身较大的情况下更有效,因为如果n=a*b
和a也可以将其更改为
for (int x = 2 ; x <= n/x ; ) {
if (n % x == 0) {
System.out.println("Prime factor: " + x);
res.add(x);
n = n / x;
}
else {
x++; // increment moved here
}
}
if (n > 1) {
System.out.println("Prime factor: " + n);
res.add(n);
}
for(int x=2;x 1){
System.out.println(“素因子:+n”);
决议增补(n);
}
我还更改了终止条件,以使其在n
的最大素因子本身较大的情况下更有效,因为如果n=a*b
和a,您是否也可以发布while循环版本?while
是执行一些代码,直到某些条件变为false(因此它循环),如果
是某个条件为真时执行一些代码(所以一次)你也可以发布你的while循环版本吗?而
是执行一些代码直到某个条件为假时(所以它循环),如果
是某个条件为真时执行一些代码(所以一次)谢谢,猜这解释了为什么if语句使用递归。谢谢,我猜这就解释了为什么if语句是使用递归的。谢谢你的提示!谢谢你的提示!
for (int x = 2 ; x <= n/x ; ) {
if (n % x == 0) {
System.out.println("Prime factor: " + x);
res.add(x);
n = n / x;
}
else {
x++; // increment moved here
}
}
if (n > 1) {
System.out.println("Prime factor: " + n);
res.add(n);
}