KKT函数605最大的素因子222

试题描述

约翰的农场开始渐入正轨了,因为他给每头奶牛贴上了清晰的序列号标签。不幸的是,奶牛们私下里认为有一些序列号比较好,一头牛的序列号如果有比其他奶牛都高的素因子,那它就有最高的社会地位。

现在给出 N 个序列号,每个序列号的范围在 1-20000 之间,请编程确定谁有最大的素因子。如果没有素因子,则输出 0。

输入

第 1 行一个正整数 N 。
第 2 行到第 N+1 行,每行一个整数,表示一个序列号。

输出

一行一个整数,表示具有最大素因子的序列号。如果有多个这样的序列号,则输出输入数据中较早输入的数。

输入示例

4
36
38
40
42

输出示例

38

其他说明

数据范围:1 <= N <= 5000。

代码:

#include<bits/stdc++.h>
using namespace std;
bool zhi ( int n )
{
    int i ;
    if ( n == 1 )
    return false ;
    for ( i = 2 ; i <= sqrt ( n ) ; ++ i )
    {
        if  ( n % i == 0 )
        return false ;
    }
    return true ;
}
int pd ( int n )
{
    int i = n ;
    while ( 1 )
    {
        if ( ( n % i == 0 && zhi ( i ) ) || i == 1 ) break ;
        -- i ;
    }
    if ( i == 1 ) return -1 ;
    else return i ;
}
int main()
{
    int n , x , MAXN = 0 , flag = 0;
    cin >> n ;
    while ( n -- )
    {
        cin >> x ;
        if ( pd ( x ) > MAXN) { MAXN = pd ( x ) ; flag = x ; }
    }
    cout << flag ;
    return 0 ;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值