0
已解决
为了迎接国庆,信息学兴趣小组的同学在辅导老师的带领下,举办了一个盛大的晚会,晚会的第一项内容是做游戏:寻找质因数。老师会让若干个同学来回答问题,每次被提问的同学会拿到一张卡片,卡片上有N个数,他们的任务是求出N个数中质因数最大的数字。对于答对的同学,老师会派发一份精美的礼品。
输入描述 Input Description
第一行,一个整数N,表示数字个数。
接下来N行,每行一个整数Ai,表示给出的数字。
N <= 5000 , Ai <= 20000
输出描述 Output Description
一个整数,表示质因数最大的数字。
样例输入 Sample Input
4 36 38 40 42
样例输出 Sample Output
38
#include<bits/stdc++.h>
using namespace std;
int n,a[5005],b[20005],maxn=-1,s;
bool pd(int x)
{
if(x==0||x==1)
return false;
for(int i=2;i<=sqrt(x);i++)
{
if(x%i==0) return false;
}
return true;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
for(int j=1;j<=sqrt(a[i]);j++)
{
if(a[i]%j==0&&pd(a[i]/j))
{
if(a[i]/j>maxn)
{
maxn=a[i]/j;
s=a[i];
}
break;
}
}
}
cout<<s;
return 0;
}
为什么90分啊?请问哪里错了?