SC-202004030939_20200828-潘旭
日志
问题:
问题内容:题目:将一个正整数分解质因数。例如:输入90,打印出90=2 * 2 * 3 * 5。
// 提示代码
int count = 0;
System.out.print(n+"=");
for (int i = 2; i <= n; i++) {
if(n%i==0) { //质因数
if(count==0)
System.out.print(i);
else
System.out.print("*"+i);
n = n/i;
if(n>i) {
i--;
}
count++;
}
}//给的代码输入90可以打印出90 = 2 * 2 * 3 * 5,但是输入36只打印 36 = 2* 2 * 3 ,或者27只打印出27 = 3 * 3 ,输入8只打印处 8 = 2 * 2,这啥情况? 读了好几遍过程应该是对的。
问题来源:做题时遇到的的
解决问题:
int count = 0;
System.out.print(n+"=");
for (int i = 2; i <= n; i++) {
if(n%i==0) { //质因数
if(count==0)
System.out.print(i);
else
System.out.print("*"+i);
n = n/i;
if(n>=i) { // 结果对比了这几个数字才发现问题出在这 36, 27 , 8 的后两个质因数都是相等的,所以这的判
i--; // 断应该是>=。
}
count++;
}
}
// 我发现 用while 循环好像更简便一点。
int x =2;
while( x <= n) {
if(x == n) {
System.out.print(n);
break;
}
if(n%k == 0) {
System.out.print(x+"*");
n = n/x;
}
else {
x++;
}
}
吐槽:
吐槽自己观察能力太差,总是get不到问题的关键。
近期评论