点击上方“蓝字”关注我们了解更多算法思路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(); }}
扫码关注我们吧
作者:白苏(Baisu)
逸工作室,带你学习算法~ 戳“阅读原文”我们一起进步