a010. 因數分解
因數分解就是從2開始除一直除到除不下去為止嘛,
迴圈結構:
for(除數 = 2; 被除數 != 1; 除數加一){ while(被除數可以被除數整除){ 被除數 = 被除數 / 除數; } }大致上就是這樣的狀態,可是還缺乏了次方、輸出等等,所以再加強:
for(除數 = 2; 被除數 != 1; 除數加一){ // "!="是不等於的意思 int 次方 = 0; while(被除數可以被除數整除){ 次方加一; 被除數 = 被除數 / 除數; } if(次方 > 1){ //要輸出含有"^"的結果 print(除數 ^ 次方) }else if(次方 == 1){ //僅輸出除數就好 print(除數) } if(被除數 != 1 且 次方 != 0){ //除數還未除盡 且 當次迴圈整除 //就是肯定還有因數沒找完 print(" * ") } }因為題目說資料是大於1所以不用考慮被除數是1的情況。
程式碼如下:
- /* a010:因數分解
- *
- * 2020/2/26
- *
- */
- import java.util.Scanner;
- public class Pa010{
- public static void main(String [] args){
- Scanner scanner = new Scanner(System.in);
- while(scanner.hasNext()){
- int dividend = scanner.nextInt(); //dividend = 被除數
- for(int divisor = 2; dividend != 1; divisor++){ //divisor = 除數
- int pow = 0;
- while(dividend % divisor == 0){
- pow++;
- dividend /= divisor;
- }
- if(pow > 1){
- System.out.printf("%d^%d", divisor, pow);
- }else if(pow == 1){
- System.out.print(divisor);
- }
- if(dividend != 1 && pow != 0){
- System.out.print(" * ");
- }
- }
- System.out.println();
- }
- }
- }
沒有留言:
張貼留言