#include<iostream> #include<math.h> using namespace std; bool isprime(long &n) { if(n==1) { return false; } else { for(int i=2;i*i<=n;i++) { if(n%i==0) return false; } } return true; } //这道题其实是一个把合数分解成质数相乘的题 int main() { long n; cin>>n; while(!isprime(n))//n不是素数才能进入这个循环 { for(long i=2;i*i<=n;i++) { // if(n%i==0&&isprime(i))这里已经没有必要判断i是不是素数了 //因为一个数被合数整除前,已经被小于它的素数整除了 if(n%i==0) { n/=i; cout<<i<<' '; break; } } } cout<<n<<' '; return 0; }