小韦老师@NOIP 普及组-2012-质因数分解

小韦老师@NOIP 普及组-2012-质因数分解

题目:

描述

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

输入

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

输出

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

输入样例1

21

输出样例1

7

提示

对于 60% 的数据,6 ≤ n ≤ 1000。对于 100% 的数据,6 ≤ n ≤ 2*10^9

题解:

思路:
整体思路:

首先要知道唯一分解定理:一个数能且只能分解为一组质数的乘积。可知,若输入的数满足题目条件,他就只能分解为两个质数的乘积。所以在比他小且大于 1 的自然数中,只有那两个数能整除它,之间不可能再有任何合数或质数能整除它了,因为最小的能整除它的合数已经是他本身了。

具体步骤:

1.定义 n,并输入 n。
2.枚举 2~n-1,若当前数能整除 n,则当前数位较小的那个质因数,则 n 除以当前数即为较大的质因数:

	for(int i = 2; i < n; i++) {  // 枚举 2~n-1 
	    if(n % i == 0) {  // 若 i 能整除 n,则 i 为较小的那个质因数 
	        cout << n / i;  // 输出较大的质因数 
	        break;  // 记得退出循环 
	    }
	}
完整代码:
#include <bits/stdc++.h>

using namespace std;

int main() {
	
    int n;
    cin >> n;
    for(int i = 2; i < n; i++) {  // 枚举 2~n-1 
    	if(n % i == 0) {  // 若 i 能整除 n,则 i 为较小的那个质因数 
        	cout << n / i;  // 输出较大的质因数 
        	break;  // 记得退出循环 
        }
	}
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值