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
    }
    
    • 1
      @ 2024-7-29 18:04:00
      using namespace std;
      void dfs(long long n){
      if(n<=1){
      cout<<1<<endl;
      return;
      }
      if(n%2==0){
      cout<<2<<endl;
      return;
      }
      for(long long i=3;i<=sqrt(n);i+=2){
      if(n%i==0){
      cout<<i<<endl;
      return;
      }
      }
      cout<<n<<endl;
      }
      int main(){
      long long t;
      cin>>t;
      while(t--){
      long long n;
      cin>>n;
      dfs(n);
      }
      return 0;
      }```
      **经典不知名定理(bushi**
      
      • @ 2024-7-29 19:03:02

        艹,晚了一步!

      • @ 2024-7-29 19:04:01

        为bits . stdc++ . h哥献上祝福

    • 0
      @ 2024-7-30 16:55:10

      这道题嘛~~~~~~~~~~~~~~~ 要注意循环是: for(int i=2;i<=sqrt(n);i++) ! 这里不要写n,写了就寄了; 那么上代码

      #include<bits/stdc++.h>
      using namespace std;
      int main(){
          int t;
          cin>>t;
          while(t--){
              long long n;
              cin>>n;
              int i;
              for(i=2;i<=sqrt(n);i++){
                  if(n%i==0){
                      cout<<i<<endl;
                      break;
                  }
              }
              if(i==floor(sqrt(n))+1)cout<<n<<endl;
          }
      }
      

      爸爸点个赞再走呗,谢谢!

      • @ 2024-7-31 17:51:25

        解释一下 for(int i = 2;i <= sqrt(n);i++) 的时间复杂度是比 for(int i = 2;i * i <= n;i++) 略高 本题无影响

    • 1

    信息

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