计蒜客---最大质因数

给出N个数字,试求质因数最大的数字。

输入格式:

第一行,一个整数N,表示数字个数。 接下来N行,每行一个整数A_i,表示给出的数字。

输出格式:

一个整数,表示质因数最大的数字。

N  < =  5000  ,  A_i  < =  20000

举例 

38和12

38=19*2, 12=2*3*3, 38最大的是19 12最大的是3, 所以本数据要输出38。

样例输入

4
36
38
40
42

样例输出

38

 1 #include <iostream>
 2 #include <algorithm>
 3 #include <cstring>
 4 #include <cstdio>
 5 #include <vector>
 6 #include <cstdlib>
 7 #include <iomanip>
 8 #include <cmath>
 9 #include <ctime>
10 #include <map>
11 #include <set>
12 #include <queue>
13 using namespace std;
14 #define lowbit(x) (x&(-x))
15 #define max(x,y) (x>y?x:y)
16 #define min(x,y) (x<y?x:y)
17 #define MAX 100000000000000000
18 #define MOD 1000000007
19 #define pi acos(-1.0)
20 #define ei exp(1)
21 #define PI 3.141592653589793238462
22 #define INF 0x3f3f3f3f3f
23 #define mem(a) (memset(a,0,sizeof(a)))
24 typedef long long ll;
25 ll gcd(ll a,ll b){
26     return b?gcd(b,a%b):a;
27 }
28 bool cmp(int x,int y)
29 {
30     return x>y;
31 }
32 const int N=10005;
33 const int mod=1e9+7;
34 int a[31];
35 int la(int x)
36 {
37     int flag=1;
38     for(int i=2;i*i<=x;i++){
39         if(x%i==0){
40             flag=0;
41             break;
42         }
43     }
44     return flag;
45 }
46 int main()
47 {
48     std::ios::sync_with_stdio(false);
49     int n,m,t=0,s;
50     cin>>n;
51     for(int i=0;i<n;i++){
52         cin>>m;
53         for(int j=m;j>=2;j--){
54             if(m%j==0&&la(j)&&j>t){
55                 t=j;
56                 s=m;
57                 break;
58             }
59         }
60     }
61     cout<<s<<endl;
62     return 0;
63 }
原文地址:https://www.cnblogs.com/wydxry/p/7281731.html