问题 D: 2012_p1 质因数分解 (prime.cpp/c/pas)
时间限制: 1 Sec 内存限制: 128 MB提交: 73 解决: 23
[ 提交][ 状态][ 讨论版][命题人: 外部导入]
题目描述
1.质因数分解
(prime.cpp/c/pas)
【问题描述】
已知正整数 n 是两个不同的质数的乘积,试求出较大的那个质数。
【输入】
输入文件名为 prime.in。
输入只有一行,包含一个正整数 n。
【输出】
输出文件名为 prime.out。
输出只有一行,包含一个正整数 p,即较大的那个质数。
【输入输出样例】
prime.in
21
prime.out
7
【数据范围】
对于 60%的数据,6 ≤ n ≤ 1000。
对于 100%的数据,6 ≤ n ≤ 2*109。
#include<cstdio>
#include<string.h>
#include<algorithm>
#include<iostream>
#include<map>
using namespace std;
#define ll long long
bool vis[1000007];
ll a[80000];
ll max1(ll x,ll y)
{
if(x>y)return x;
return y;
}
bool is(ll y)
{
for(ll i=2;i*i<=y;i++)
if(y%i==0)return 0;
return 1;
}
int main()
{
ll n;scanf("%lld",&n);
for(ll i=2;i*i<n;i++)
{
if(n%i==0)
{
ll y=n/i;
if(is(i)&&is(y))
{
printf("%d\n",y);
return 0;
}
}
}
return 0;
}