P1075 [NOIP2012 普及组] 质因数分解

该文章描述了一个编程问题,要求找出给定正整数n的最大质数因数。通过枚举从2到√n,一旦找到n的因数,即可确定较大的质数。提供的参考代码实现了这一逻辑。

题目描述

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

输入格式

输入一个正整数 nnn

输出格式

输出一个正整数 ppp,即较大的那个质数。

样例输入

21

样例输出

7

提示

1≤n≤2×1091 \le n\le 2\times 10^91n2×109

思路分析
根据题意,正整数n的两个因数一定是质数。根据因数的特点,较小的因数最大只有 n\sqrt{n}n , 即 2×109\sqrt{2\times 10^9}2×109 ,小于 10510^5105

所以直接枚举 2~ n\sqrt{n}n,找到较小的质因子,就能算出较大的质因子了。

参考代码

#include<iostream>
using namespace std;
int main()
{
    int n;
    cin>>n;
    for(int i=2;i*i<=n;++i)
        if(n%i==0)
        {
            cout<<n/i;
            return 0; //找到质因子后直接结束程序
        }
} 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值