10分代码,不过我也不知道哪里写错了从后往前判断是否是因子和素数。
# include<iostream>
# include<algorithm>
# include<cmath>
using namespace std;
const int MAX=20005;
int n,a[MAX],x,ans,maxn;
void fun(){ //筛法求素数
for(int i=2;i<=sqrt(MAX);++i)
if(a[i]==0) {
for(int j=i*i;j<=MAX;j+=i)
a[j]=1;
}
}
int main(){
cin>>n;
fun();
for(int i=0;i<n;++i){
cin>>x;
for(int j=x;j>=1;j--){
if(x%j==0&&a[j]==0)
if(maxn<j) {
maxn=j;
ans=x;
break;
}
}
}
cout<<ans<<endl;
return 0;
}
AC代码
# include<iostream>
# include<algorithm>
using namespace std;
int n,maxn,x,ans,t;
int GETMAXPrime(int n){
int i=2;
int res=1;
while(n>2){
if(n%i==0){
n/=i;
res=i;
}
else i++;
}
return res;
}
int main(){
cin>>n;
for(int i=0;i<n;++i){
cin>>x;
t=GETMAXPrime(x);
if(t>maxn){
maxn=t;
ans=x;
}
}
cout<<ans<<endl;
return 0;
}