and*_*and 0 java primes biginteger
我想打印两个数字之间的所有素数.这是我的代码:
package sphere;
import java.math.BigInteger;
import java.io.*;
class PrimeTest2 {
public static void main(String args[]) throws java.lang.Exception {
BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
String s = r.readLine();
String [] splitted = s.split(" ");
BigInteger lower = new BigInteger(splitted[0]);
BigInteger upper = new BigInteger(splitted[1]);
int lowerAsInt = Integer.parseInt(splitted[0]);
int upperAsInt = Integer.parseInt(splitted[1]);
BigInteger intermediate = lower;
for (int i=lowerAsInt; i<upperAsInt; i++) {
intermediate = intermediate.nextProbablePrime();
System.out.println(intermediate);
}
}
}
Run Code Online (Sandbox Code Playgroud)
当它以1 10运行时,输出为:
2
3
5
7
11
13
17
19
23
Run Code Online (Sandbox Code Playgroud)
为什么不在7点停止?
因为你的程序说运行时间(1到9)不会停在10以下而不是你的循环,你可能想要:
BigIntegerupper = BigInteger.valueOf(upperAsInt);
while (intermediate.compareTo(upper) <= 0) {
System.out.println(intermediate);
intermediate = intermediate.nextProbablePrime();
}
Run Code Online (Sandbox Code Playgroud)
看到不同?您从1开始并在9(小于10)处停止,在每次迭代时打印一个数字.当数字大于上限时,上面停止.
| 归档时间: |
|
| 查看次数: |
2202 次 |
| 最近记录: |