TLE代码#include<stdio.h>_Bool IsPrime(int x){ int k = 2; while(k<=sqrt(x)&&x%k!=0) k++; if(k>sqrt(x)) return 1; else return 0;}int main(){ int Num,ans; int temp=0; scanf("%d",&Num); for(int i=2,i<=Num,i++){ if(IsPrime(i) && Num%i==0){ if(temp<i){ temp=i; } } } printf("%d\n",temp);}AC代码 可以由最小因数找到最大因数,直接相除,判定这个商是否为素数即可#include<iostream>#include<cstdio>#include<cmath>using namespace std;inline bool pd(int);int n;int main() { scanf("%d", &n); for(int i=2;i<=sqrt(n);i++) if (n%i == 0 && pd(n/i)) { printf("%d", n/i); return 0; } return 0;}inline bool pd(int x) { for (int i = 2; i <= sqrt(x); i++) if (x%i == 0) return 0; return 1;}