#include <bits/stdc++.h> #include #include #include #include #include #include #include using namespace std; long long int n; long long int i=2; int main(){ scanf("%d",&n); while(n!=1){ if(n%i==0){ cout<<i<<" "; n/=i; }else{ i++; } } }
谢谢
cin >> n; for (int i = 2; i <= n / i; i++) { while (n % i == 0) { cout << i << ' '; n /= i; } } if (n != 1) cout << n;
根据因数分解定理,因数总是成对存在的,所以只需要枚举小的因数即可。
如果n是个很大的质数,i从2开始循环会超时
共 4 条回复
谢谢
根据因数分解定理,因数总是成对存在的,所以只需要枚举小的因数即可。
如果n是个很大的质数,i从2开始循环会超时