2016-10-04 71 views
-2
public boolean checkPrime(int number) 
{ 
    int divisor = 2; 
    int remainder = 1; 
    while(number != divisor) 
    { 
     remainder = number % divisor ; 
     if(remainder == 0) 
     { 
      return false ; 
     } 
     else 
     { 
      divisor ++ ; 
     } 

    } 
    return true ; 
} 


public void primeFactors (int num) 
{ 
    int i = 2 ; 
    while( i <= num) 

    { 

     if(num % i == 0) 
     { 
      boolean isPrime = checkPrime(i); 
      checkPrime(i) ; 
      if(isPrime) 
      { 
       System.out.print("," + i); 
       i++; 
      } 
      else 
      { 
       i++; 
      } 
     } 
     else 
     { 
      i++ ; 
     } 
    } 
} 

}我試圖做一個質因子分解Java代碼爲我的AP計算機科學類和我堅持

我遇到的問題是,我不能把它打印出來的不止僅僅指剛一個每個號碼。例如,如果你輸入16,它只會給你一個2而不是4 2。我正在使用支票素數,因爲我的教授正在製作我們,我知道您可以在沒有它的情況下執行該計劃。我在這裏是新的,我非常感謝任何建議!

+2

一些建議:閱讀[問]。使用調試器。喝很多水。 – Amit

+0

檢查在這裏:http://stackoverflow.com/questions/38541142/prime-number-checker-using-java和大量的質數重複。在這裏你犯了很多錯誤,比如循環到數字而不是sqrt(數字),當你找到它時不會被這個因素分開,... –

回答

0

我遇到的問題是我不能打印出比每個數字都多的數字。

那是因爲打印後i++;。你不應該繼續下一個潛在的除數,而應該保持同一個直到可分性消失。

除了增加除數,你應該從num中分出來。例如,如果您看到num=24可被2整除,請打印2,並製作num=12。下一次迭代將再次打印2,並製作num=6。以下迭代將最後一次打印2,並使num=3。這是當您的算法可以移動到下一個除數時,並打印3

+0

非常感謝 –

相關問題