【普及-】KKT函数605最大素因子/最大素因子(C++)
看在作者大大如此用心打代码的份上,就点个三连吧!!!
级别: | 普及-(部分网站不一样) |
难度: | 低 |
适做年龄: | 初中组 |
题目:
描述
约翰的农场开始渐入正轨了,因为他给每头奶牛贴上了清晰的序列号标签。不幸的是,奶牛们私下里认为有一些序列号比较好,一头牛的序列号如果有比其他奶牛都高的素因子,那它就有最高的社会地位。现在给出 N 个序列号,每个序列号的范围在 1-20000 之间,请编程确定谁有最大的素因子。如果没有素因子,则输出 0。
输入描述
第 1 行一个正整数 N 。
第 2 行到第 N+1 行,每行一个整数,表示一个序列号。
输出描述
一行一个整数,表示具有最大素因子的序列号。如果有多个这样的序列号,则输出输入数据中较早输入的数。
用例输入 1
4
36
38
40
42
用例输出 1
38
提示
数据范围:1 <= N <= 5000。
解答:
#include <bits/stdc++.h>
using namespace std;
const int N=20010;
bool ss(int n)
{
if(n==1)return false;
for(int i=2;i<=n/i;i++)
{
if(n%i==0)return false;
}
return true;
}
int zdsyz(int n)
{
for(int i=1;i<=n/i;i++)
{
if(n%i==0 && ss(n/i))return n/i;
}
}
int main()
{
int n,x,zdx=0,zd=1,t;
cin>>n;
while(n--)
{
cin>>x;
int t=zdsyz(x);
if(t>zd)
{
zdx=x;
zd=t;
}
}
cout<<zdx;
return 0;
}