zoukankan      html  css  js  c++  java
  • 试题 算法训练 最大质因数

    一.题目

    问题描述
      给出N个数字,求出有最大的最大质因数的那个数
    输入格式
      第一行:一个整数N。
      接下来的N行,每行一个整数A_i,表示给出的那N个数字。
    输出格式
      第一行:一个整数,拥有最大的最大质因数的那个数。
    样例输入
    4
    36
    38
    40
    42
    样例输出
    38
    数据规模和约定
      60%的数据满足:N<=100
      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;
    }
  • 相关阅读:
    学习进度笔记
    博雅数据机器学习07
    学习进度笔记
    博雅数据机器学习06
    《一级架构师》阅读笔记
    学习进度笔记
    博雅数据机器学习05
    递归的概念
    CSS学习笔记3:选择器及优先级
    CSS学习笔记2:伪类
  • 原文地址:https://www.cnblogs.com/Aiahtwo/p/12811274.html
Copyright © 2011-2022 走看看