1565: 【入门】质因数分解(1664)
内存限制:128 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:21
解决:14
题目描述
已知正整数 n 是两个不同的质数的乘积,试求出较大的那个质数。
输入
输入只有一行,包含一个正整数 n。
输出
输出只有一行,包含一个正整数 p,即较大的那个质数。
样例输入 复制
21
样例输出 复制
7
提示
【数据范围】
对于 60%的数据, 6 ≤ n ≤ 1000。
对于 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; }