问题描述:
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 primes factors. What is the first of these numbers?
解决问题:
public class Problem47 {
public static int[] elements = new int[100000];
public static int find_prime_factors(int number){
int index = 2;
int total = 0;
int tmp = number;
while(number!=1){
if(number%index==0){
total++;
do{
number= number/index;
}while(number%index==0);
total = 1 + elements[number];
number = 1;
}
index++;
}
elements[tmp]=total;
return total;
}
public static int find_first(int times){
int first =0;
int begin = 20;
int total = 0;
do{
total = 0;
if(find_prime_factors(begin)==times){
total++;
for(int i=1;i<times;i++){
if(find_prime_factors(begin+i)!=times){
begin = begin+i+1;
break;
}else{
total++;
}
}
first = begin;
}else{
begin++;
}
}while(total<times);
return first;
}
public static void main(String[] args){
long t1 = System.currentTimeMillis();
System.out.println(find_first(4));
long t2 = System.currentTimeMillis();
System.out.println(t2-t1);
}
}