java 判断一个数是正整数_【Java】P1075 质因数分解—关于数学方法在解题中的运用—(OJ:洛谷)...

82cf73d8c949ab2450067afe728e1d4b.png 点击上方“蓝字”关注我们了解更多算法思路0 1题目

题目来源:洛谷OJ

题目链接:

https://www.luogu.com.cn/

题目描述

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

输入格式

一个正整数n。

输出格式

一个正整数p,即较大的那个质数。

输入输出样例

输入 #1复制

 21

输出 #1复制

 7

说明/提示

n ≤ 2 × 109

NOIP 2012 普及组 第一题

0 2思路

第一眼阅读完题目会感觉这个题很复杂,不但要判断质因数,还要应付庞大的数据范围。

质因数(素因数或质因子)在数论里是指能整除给定正整数的质数。除了1以外,两个没有其他共同质因子的正整数称为互质。因为1没有质因子,1与任何正整数(包括1本身)都是互质。正整数的因数分解可将正整数表示为一连串的质因子相乘,质因子如重复可以用指数表示。根据算术基本定理,任何正整数皆有独一无二的质因子分解式 [1] 。只有一个质因子的正整数为质数。(百度百科)

但是,用过质因数的定义,我们可以联想到唯一分解定理。

算术基本定理可表述为:任何一个大于1的自然数 N,如果N不为质数,那么N可以唯一分解成有限个质数的乘积,这里P1

2

3......

n均为质数,其中指数ai是正整数。这样的分解称为 N 的标准分解式。(百度百科)

剩下的就简单了,直接用输入的数对i(i = 2, 3 ,4 ,5 ,......)求余,倘若余数为0,则n / i 的就是答案。

0 3Java源代码
package 入门3循环结构;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.io.StreamTokenizer;/** *@Title P1075质因数分解.java *@description TODO *@time 2020年7月17日 *@author Baisu *@version 1.0 */public class P1075质因数分解 {  public static void main(String[] args) throws IOException {    // TODO Auto-generated method stub    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));    StreamTokenizer st = new StreamTokenizer(br);    PrintWriter pr = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));    st.nextToken();    int n = (int) st.nval;    for(int i=2; i      if(n%i==0) {        pr.println(n/i);        break;      }    }    pr.flush();  }}
f21852c12e3653bc1d213b0cf8cd8df7.png扫码关注我们吧

作者:白苏(Baisu)

逸工作室,带你学习算法~ d9d25556715627283141556e5bf6c971.png戳“阅读原文”我们一起进步
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值