题目描述如下:
The first two consecutive numbers to have two distinct prime factors are:
14 = 2 × 7
15 = 3 × 5
The first three consecutive numbers to have three distinct prime factors are:
644 = 2² × 7 × 23
645 = 3 × 5 × 43
646 = 2 × 17 × 19.
Find the first four consecutive integers to have four distinct prime factors. What is the first of these numbers?
Java code:
public class Problem47
{
public static void main(String[] args)
{
int length = 4;
long start = System.currentTimeMillis();
for (int i = 646; i < 1000000; i++)
{
if (getDivisor(i) == length && getDivisor(i + 1) == length
&& getDivisor(i + 2) == length
&& getDivisor(i + 3) == length)
{
System.err.println(i);//134043
break;
}
}
System.out.println(System.currentTimeMillis() - start);//9177ms
}
public static int getDivisor(int num)
{
Set<Integer> set = new HashSet<Integer>();
while (num > 1)
{
for (int i = 2; i <= num; i++)
{
if (num % i == 0)
{
set.add(i);
num = num / i;
break;
}
}
}
return set.size();
}
}
result:
134043
9177ms