I have began doing the problems found on Project Euler and have just solved problem 3. However, I feel as if my code is very long and too brute-force. I was hoping somebody could give it a look and give me some guidelines for this problem and future programming in general that would help me with cleaning it up or even just better ways of solving this.
Problem 3 states The prime factors of 13195 are 5, 7, 13 and 29.
What is the largest prime factor of the number 600851475143 ?
int primeFactor = 0;
int pfCounter = 0;
int[] pf = new int [1229];
int[] numbers = new int[10000];
long number = 600851475143L;
int p = 0;
//initialize the array numbers to include all numbers
//from 1 to 1000 for determining prime numbers
for(int i = 0; i < numbers.length; i++)
{
numbers[i] = i+1;
}
//determining which numbers are prime numbers
for(int i = 0; i <numbers.length; i++)
{
//divide each number by every number below it
//to see if the pfCounter = 1 which would mean
//it is only divisible by itself and 1
for(int j = i; j > 0; j--)
{
if(numbers[i] % j == 0)
{
pfCounter++;
}
}
//if the number only has 1 in it's pfCounter
//insert the number from the numbers array into the
//pf array and restart the counter to 0 else restart
//the counter to 0 and try again
if(pfCounter == 1)
{
pf[p] = numbers[i];
pfCounter = 0;
p++;
}
else
{
pfCounter = 0;
}
}
/*
for(p = 0; p < pf.length; p++)
{
System.out.println(pf[p]);
}*/
for(int i = 0; i < pf.length; i++)
{
if(number % pf[i] == 0)
{
primeFactor = pf[i];
}
}
System.out.println(primeFactor);
}
}