1565: 【入门】质因数分解(1664)

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:21 解决:14

题目描述

已知正整数 n 是两个不同的质数的乘积,试求出较大的那个质数。

输入

输入只有一行,包含一个正整数 n

输出

输出只有一行,包含一个正整数 p,即较大的那个质数。

样例输入 复制

21

样例输出 复制

7

提示

【数据范围】
对于
60%的数据, 6 ≤ n ≤ 1000

对于 100%的数据, 6 ≤ n ≤ 2*109

【来源】

noip2012普及组复赛第1题。

#include<bits/stdc++.h>
using namespace std;
int Decomposition(int x, int a[]){
 //分解 x,数组a升序记录所有质数
 //函数值返回分解出来的质数数量
    int cnt=0;
    //在2~sqrt(x)的范围内找质因子 
    for(int i=2;i<=sqrt(x);i++){
    	//当i是x的因子时,i是质因子,从x中除掉i 
		while(x%i==0){
			a[++cnt]=i;
			x=x/i;
		} 
	}
	//如果最后x不是1,x也是质因子 
	if(x!=1) a[++cnt]=x;
    return cnt;
}
int main(){
    int n,a[110];
    cin>>n;
    int s=Decomposition(n,a);
    cout<<a[ s ];
	return 0;
}