2022.9.23上机
任务描述
本关任务:给定一组整数,共n(1≤n≤5000)个整数,整数的取值范围为1~20000,请确定具有最大素数因子的整数(记住:素数只有因子1和它自身,例如整数7是素数,而整数6可以被2和3整除,6不是素数)。
编程要求
根据提示,在右侧编辑器补充代码,输出具有最大因子的整数。
测试说明
输入格式:
第一行为单个整数n,接下来共n个整数,每一行包含一个整数。
输出格式:
在一行中输出具有最大素数因子的那个整数,如果有多个,则输出最早出现在输入文件中的一个。
输入样例:
4
36
38
40
42
输出样例:
38
样例解释:
36的素数因子为2、3。
38的素数因子为2、19。
40的素数因子为2、5。
42的素数因子为2、3、7。
最大的素数因子为19,所以输出38。
开始你的任务吧,祝你成功!
C++程序`
#include<iostream>
using namespace std;
const int N =20001;
int a[N];
int p[N];
int cnt = 0;
void init()
{
for(int i = 0; i <= N - 1; i++)
a[i] = 1;
a[0] =a[1] = 0;
for(int i=2; i <= N - 1; i++){
if(a[i]==1){
p[cnt++] = i;
for(int j = i + i; j <= N - 1; j += i)
a[j]=0;
}
}
}
int main()
{
init();
int n;
cin >> n;
int ansp=2;
int ansn=1;
while(n--)
{
int val;
cin >> val;
for(int j=cnt-1; j>=0; j--)
{
if(val%p[j]==0)
{
if(p[j]>ansp)
{
ansp=p[j];
ansn=val;
}
}
}
}
cout << ansn << endl;
return 0;
}