为什么是80分

tctm169 杀手 2024-04-29 20:50:13 8

#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++; } } }

{{ vote && vote.total.up }}

共 4 条回复

tctm169 杀手

谢谢

root 站长
    cin >> n;
    for (int i = 2; i <= n / i; i++) {
        while (n % i == 0) {
            cout << i << ' ';
            n /= i;
        }
    }

    if (n != 1)
        cout << n;
root 站长

根据因数分解定理,因数总是成对存在的,所以只需要枚举小的因数即可。

root 站长

如果n是个很大的质数,i从2开始循环会超时