#26765: 請問一下else之下的begin = false; 這句是代表甚麼呢


jackson199988@gmail.com (jackson)

學校 : 不指定學校
編號 : 160565
來源 : [223.138.166.159]
最後登入時間 :
2021-08-11 02:31:51
a010. 因數分解 | From: [114.42.88.205] | 發表日期 : 2021-08-24 11:07

package SelfStudy;

import java.util.Scanner;

public class a010SeniorHighAccept2 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);

while (input.hasNext()) {
int number = input.nextInt(); // input 20
boolean begin = true;

for (int i = 2; i <= number; ++i) {

int divisibleTimes = 0; //自己沒有想到divisibleTimes(被整除的次數) 一次被整除就2就多一個次方

if (number % i == 0) {
if (!begin) { // 如果number % i == 0false
System.out.print(" * " + i); // 則印出 " * " + i
} else { // 如果number % i == 0true ex: 20 ÷ 2 = 10 ... 0
begin = false;
System.out.print(i);
// input20 這邊則印出公因數 2 4 5 10 20
// 不包括公因數1 因為for 迴圈從2開始
}
while (number % i == 0) {
number /= i; // number = number / i ex: 10 = 20 ÷ 2
++divisibleTimes;
}
}
if (divisibleTimes > 1) {
System.out.print("^" + divisibleTimes);
}
}
}
}
}



 
#26769: Re:請問一下else之下的begin = false; 這句是代表甚麼呢


jam930725@gmail.com (浮沉沉沉沉沉沉沉沉)

學校 : 國立臺中科技大學
編號 : 124762
來源 : [123.241.38.232]
最後登入時間 :
2024-10-01 22:15:14
a010. 因數分解 | From: [123.110.34.107] | 發表日期 : 2021-08-24 15:07

if (number % i == 0) {// 如果number % i == 0 為 true (意思就是如果 i 是因數,i可整除number)
if (!begin) { //begin在這裡是用來判斷是否為第一個因數 (如果是第一個因數 前面不用輸出 '*' 單純在解決格式的問題)
System.out.print(" * " + i);
// 若input為20 此區塊則印出 " * 5"
} else { // 如果begin == true (意思就是他是第一個因數)
begin = false; // 把begin = false 因為第一個因數已經輸出過了,後面全部都需要 '*'
System.out.print(i);
// 若input為20 此區塊則印出 "2"
}
while (number % i == 0) {
number /= i; // 即number = number / i ex: 10 = 20 ÷ 2
++divisibleTimes;
} //這裡在計算它的次方數
}
if (divisibleTimes > 1) {
System.out.print("^" + divisibleTimes);
} //次方數大於1就補上次方數

 

 
ZeroJudge Forum