2 条题解

  • 0
    @ 2025-11-27 11:58:46
    #include <bits/stdc++.h>
    using namespace std;
    
    int main(){
        int n;
        cin>>n;
        //质因数分解的唯一性定理:每个合数的质因数分解形式是唯一的。
        for(int i=2;i*i<n;i++){
            while (n%i==0){//逐个循环所以不能整除的数不是因数不用管
                n/=i;//把小的质因数都除干净(p次幂全部被除掉)
            }
        }
        // 最后除完会剩下一个数(大于1),这个数就是最大的质因数
        cout<<n<<endl;
    }
    
    • 0
      @ 2025-9-9 23:45:51

      C :

      #include<stdio.h>
      int main()
      {
        int num;
        while (scanf("%d",&num)!=EOF)
        {
      	  int i;
      	  for (i=2;i*i<=num;i++)
      	  {
      		  if (num%i==0) 
      		  {
      			  printf("%d\n",num/i);
      			  break;
      		  }	 
      	  }
        }
        return 0;
      }
      

      C++ :

      #include <iostream>
      #include <cmath>
      using namespace std;
      int main()
      {
          int n;
          cin>>n;
          int m=sqrt(n);
          int i,k;
          for(i=2;i<=m;i++)
              if(n%i==0) {k=i;break;}
          cout<<n/k;
          return 0;
      }
      

      Pascal :

      uses math; 
      var n,i:longint; 
      function prime(x:longint):boolean; 
      var i:longint; 
      begin
        for i:=2 to trunc(sqrt(x)) do if x mod i=0 then exit(false); 
        exit(true); 
      end; 
      begin
        read(n); 
        i:=2; 
        repeat
          if (n mod i=0) and prime(i) and prime(n div i) then
            begin
              writeln(max(i,n div i)); 
              halt; 
            end; 
          i:=i+1; 
        until i>(trunc(sqrt(n))); 
      end.
      

      Java :

      import java.util.*;
      public class Main{
        public static void main(String[] args) {
          Scanner cin = new Scanner(System.in);
          long startTime = System.currentTimeMillis();
          int n = cin.nextInt();
          for(int i = 2; i <= n/2; i ++){
            if(n%i==0){
              System.out.println(n/i);
              break;
            }
          }
          long endTime = System.currentTimeMillis();
          long totalTime = endTime - startTime;
          // System.out.println("\n"+totalTime);
        }
      
        public static int isPrime(int n){
          if(n == 1 || n ==0){
            return 0;
          }
          for(int i = 2; i <= (int)Math.sqrt(n); i ++){
            if(n%i==0){
              return 0;
            }
          }
          return 1;
        }
      }
      
      

      Python :

      # coding=utf-8
      def main():
          n = int(input())
      
          v = 0 
          for i in range(2, n):
              if n % i == 0:
                  v = max(i, n/i)
                  break
          
          print(int(v))
      
      if __name__ == '__main__':
          main()
      
      • 1

      信息

      ID
      769
      时间
      1000ms
      内存
      128MiB
      难度
      10
      标签
      递交数
      1
      已通过
      1
      上传者