初级天翼
4724 质因数个数
题目详情
题目描述 Description
酷酷刚刚学完数学中的质因数知识。他现在想找出n个整数中,拥有质因数最多的那个的整数。请你编写一个程序,找出输入的n个整数中质因数最多的整数。如果有多个含质因数个数最多的数字,则输出最先输入的那一个 。
输入描述 Input Description
两行,第一行一个整数n,表示输入的整数的个数
第二行,n个整数
输出描述 Output Description
一个整数,表示整数中质因数最多的整数
样例输入 Sample Input
5
47 68 23 77 50
样例输出 Sample Output
68
数据范围及提示 Data Size & Hint
n<=1000,1000<=每个整数<=100000
其中,质因数相同算作一个。比如8=2×2×2,仅有一个质因数2
考试的题目老师让订正,代码超时,还有半小时,哪个大佬会帮我做一下吧
#include<iostream>
#include<cmath>
using namespace std;
bool zs(int n){
if(n==1||n==0) return 0;
for(int i=2;i<=sqrt(n);i++)
{
if(n%i==0) return 0;
}
return 1;
}
int cnt,a[1001],b[100001];
int main()
{
int n,maxn=0;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
for(int j=2;j<=a[i];j++)
{
if(zs(j)&&a[i]%j==0){
cnt++;
b[a[i]]=cnt;
}
}
maxn=max(maxn,cnt);
cnt=0;
}
for(int i=1;i<=n;i++)
{
if(b[a[i]]==maxn)
{
cout<<a[i];
break;
}
}
return 0;
}