今、この Euler プロジェクトの問題 3 を解決している間、私は少し創造的になろうとしていますが、プログラムは無限ループに陥っています。私は ArrayList を適切に使用したと思いますが、何かを忘れています。
class LargestPrimeFactor
{
public boolean prime(long n)
{
for(int i=1;i<=n-1;i++)
{
if(n%i==0)
return false;
}
return true;
}
public ArrayList primeFactors(long n)
{
ArrayList<Integer> primeFactors=new ArrayList<Integer>();
int i=2;
while(n!=1)
{
if((n%i==0)&(prime(i)))
{
primeFactors.add(i);
n/=i;
}
i++;
}
return primeFactors;
}
public int maxPrimeFactors(ArrayList<Integer> primeFactors)
{
int max=primeFactors.get(0);
for(int i=0;i<primeFactors.size();i++)
{
if(primeFactors.get(i)>max)
{
max=primeFactors.get(i);
}
}
return max;
}
}
class DemoLargestPrimeFactor
{
public static void main(String args[])
{
LargestPrimeFactor x=new LargestPrimeFactor();
ArrayList<Integer> list=new ArrayList<Integer>();
try
{
File file=new File("D:/JavaInEclipse/EulerProjects/src/Numbers.txt");
BufferedReader br=new BufferedReader(new FileReader(file));
String line="";
int n;
while((line=br.readLine())!=null)
{
n=Integer.parseInt(line);
list=x.primeFactors(n);
System.out.println("Max Prime Factor for " + n + " is =" + x.maxPrimeFactors(list));
}
}
catch(Exception e)
{
e.printStackTrace();
System.out.println("File not found !!!");
}
}
}