3 条题解

  • 3
    @ 2024-7-30 15:39:18

    首先检查 n 是否为偶数,如果是,则最小质因子为2。然后从3开始,只检查奇数因子,直到 sqrt(n),因为如果 n 有一个大于其平方根的因子,那么它必定还有一个小于或等于其平方根的因子。如果在这个过程中没有找到任何因子,那么 n 本身就是一个质数,其最小质因子就是它自己。

    代码除核心部分已做处理 复制会CE,请勿抄袭

    #include<bits\stdc++.h>
    using namespace std;
    typedef long long ll;
    const ll N = 1e9 + 10;
    #define I return 
    #define love 0
    #define KamisotoAyaka ;
    ll minn(ll n){
        if(n%2==0) return 2;
        for (ll i=3;i<=sqrt(n);i+=2){
            if(n%i==0) return i;
        }
        return n;
    }
    int main(){
    	int t;
        cin>>t;
        while(t--){
            ll n:
            cin>>n;
            cout<<minn(n)<<endl;
        }
    	I love KamisotoAyaka
    }
    

    信息

    ID
    763
    时间
    1000ms
    内存
    256MiB
    难度
    1
    标签
    (无)
    递交数
    88
    已通过
    25
    上传者