#include <iostream>
using namespace std;
main(){
int a,b,c,d;
while (cin>>a){
b=2;
d=1;
while (b<=a){
c=0;
while (a%b==0){
c++;
a=a/b;
}
if (d==1){
if (c>1){
cout<<b<<"^"<<c;
}
else if (c==1){
cout<<b;
}
d=0;
}
else if (d==0){
if (c>1){
cout<<"*"<<b<<"^"<<c;
}
else if (c==1){
cout<<"*"<<b;
}
}
b++;
}
}
}
那段被忽略是因為本來就不符合 if 判斷式,也因此不會執行陳述式。(因為此時 c = 0)
由於 a 為一奇數,因此 a % b == 0 不成立(一開始 b == 2),因此不會動到 c 之值(每次迴圈回來會將 c 設為 0)。
而一開始的 d 之值又為 1 ,因此確實會進去 if (d == 1) 其下的陳述式。但因 c == 0 ,並不會進去裡面兩個 if 的任何一者。
然後,d 就被設為 0 了。
接著跳到 b++,因此 b 的值現為 3 。
回到迴圈的開頭,c 設為 0 。而此時 a % b == 0 為真,因此進去了迴圈裡。使得出來迴圈後,c = 1 、a = 1。
因為 d == 0 ,因此進到下面的 else if (d == 0) 裡。因此輸出了「*3」。
以上。希望跑一次過程後,可以幫助到您。