#include <cmath> #include <iostream> using namespace std; int main() { int n; cin >> n; int i = 2; while(n && i<= sqrt(n)){ if(n % i == 0){ cout << i << ' '; n /= i; continue; } i ++; } cout << n << endl; return 0; } // 64 位输出请用 printf("%lld")
卡bug的地方:
1.while循环没有限定i的边界,理由是搞混了%和/,想着i够大的话,n%i总会==0;
2.没在循环结束后输出n,一没有意识到n的值不断在变,二是没想清楚循环结束时候n的值状态;
3.没有想到i的范围可以算开方(因数不会再比开方大了)