题目要求:找到形如6541367***的一个十位数,它是两个五位数的质数乘积。
思路:先用筛法找出不大于100000的所有质数,然后从这些质数中查找答案。
public static void main(String[] args) {
final int N = 100000;
/** 找到小于等于100000的所有质数 */
List<Long> pNums = pNumber(N);
/** 目标数字的下界 */
long targetNum = 6541367000L;
long pNum1 = 0;
long pNum2 = 0;
here: while (targetNum <= 6541367999L) {
long sqrtT = (int) Math.sqrt(targetNum);
/** 从PNums数组两端开始寻找 */
int left = 0;
int right = pNums.size() - 1;
while (<