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(); } } }
沒有留言:
張貼留言