2013-09-10 47 views
-1

现在我正在努力解决这个欧拉项目问题3时有点创意,但程序正在进入一个无限循环。我想我已经正确使用了ArrayList,但是我忘记了一些东西。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 !!!"); 
     } 
    } 
} 
+1

请发布完整的stacktrace。 –

+0

您尝试过哪些诊断?你有没有在调试器中完成它?您是否每次添加元素都添加了一些日志记录? –

+0

对不起,你......它进入一个无限循环 –

回答

1

此外,你可能想在这里改变你的if条件。

if((n%i==0)&(prime(i))) // it should be && and not & 
相关问题