1. TLE代码
    2. #include<stdio.h>
    3. _Bool IsPrime(int x){
    4. int k = 2;
    5. while(k<=sqrt(x)&&x%k!=0) k++;
    6. if(k>sqrt(x)) return 1;
    7. else return 0;
    8. }
    9. int main(){
    10. int Num,ans;
    11. int temp=0;
    12. scanf("%d",&Num);
    13. for(int i=2,i<=Num,i++){
    14. if(IsPrime(i) && Num%i==0){
    15. if(temp<i){
    16. temp=i;
    17. }
    18. }
    19. }
    20. printf("%d\n",temp);
    21. }
    22. AC代码 可以由最小因数找到最大因数,直接相除,判定这个商是否为素数即可
    23. #include<iostream>
    24. #include<cstdio>
    25. #include<cmath>
    26. using namespace std;
    27. inline bool pd(int);
    28. int n;
    29. int main() {
    30. scanf("%d", &n);
    31. for(int i=2;i<=sqrt(n);i++)
    32. if (n%i == 0 && pd(n/i)) {
    33. printf("%d", n/i);
    34. return 0;
    35. }
    36. return 0;
    37. }
    38. inline bool pd(int x) {
    39. for (int i = 2; i <= sqrt(x); i++)
    40. if (x%i == 0) return 0;
    41. return 1;
    42. }