1620:质因数分解
时间限制: 1000 ms 内存限制: 524288 KB【题目描述】
原题来自:NOIP 2012 普及组
已知正整数 n 是两个不同的质数的乘积,试求出较大的那个质数。
【输入】
输入只有一行,包含一个正整数 n。
【输出】
输出只有一行,包含一个正整数 p,即较大的那个质数。
【输入样例】
21
【输出样例】
7
【提示】
数据范围与提示:
对于 30% 的数据,n≤1000;
对于全部数据,6≤n≤2×109 。
sol:sqr(n)暴力枚举小的那个质因数。。。
#include <bits/stdc++.h> using namespace std; typedef int ll; inline ll read() { ll s=0; bool f=0; char ch=' '; while(!isdigit(ch)) { f|=(ch=='-'); ch=getchar(); } while(isdigit(ch)) { s=(s<<3)+(s<<1)+(ch^48); ch=getchar(); } return (f)?(-s):(s); } #define R(x) x=read() inline void write(ll x) { if(x<0) { putchar('-'); x=-x; } if(x<10) { putchar(x+'0'); return; } write(x/10); putchar((x%10)+'0'); return; } #define W(x) write(x),putchar(' ') #define Wl(x) write(x),putchar(' ') int n,m; int main() { int i; R(n); m=sqrt(n); for(i=2;i<=m;i++) { if(n%i==0) { Wl(n/i); return 0; } } return 0; }