一.题目
问题描述
给出N个数字,求出有最大的最大质因数的那个数
输入格式
第一行:一个整数N。
接下来的N行,每行一个整数A_i,表示给出的那N个数字。
接下来的N行,每行一个整数A_i,表示给出的那N个数字。
输出格式
第一行:一个整数,拥有最大的最大质因数的那个数。
样例输入
4
36
38
40
42
36
38
40
42
样例输出
38
数据规模和约定
60%的数据满足:N<=100
100%的数据满足:N<=2500,A_i<=20000
100%的数据满足:N<=2500,A_i<=20000
二.解决
思路:使用该数的因数对该数进行分解,再继续对分解后的数求最大质因数,缩小计算量
#include<bits/stdc++.h> using namespace std; typedef long long ll; int t; ll n,ans1; ll get_div(ll num)//获得最大的质因数 { ll i = 2; while(i*i<=num){ if (num%i==0) ans1=i; while (num%i==0) num/=i; i++; } if(num!=1) ans1=num; return ans1; } int main() { cin>>t; ll ans=0,max_t=0,temp; for(int i=1;i<=t;i++){ cin>>n; if(n==1) temp=1; else temp=get_div(n); if(temp>max_t) max_t=temp,ans=n; //cout<<temp<<endl; } cout<<ans<<endl; return 0; }