java 判断一个数是正整数_【Java】P1075 质因数分解—关于数学方法在解题中的运用—(OJ:洛谷)...
題目來源:洛谷OJ
題目鏈接:
https://www.luogu.com.cn/
題目描述
已知正整數n是兩個不同的質數的乘積,試求出兩者中較大的那個質數。
輸入格式
一個正整數n。
輸出格式
一個正整數p,即較大的那個質數。
輸入輸出樣例
輸入 #1復制
?21輸出 #1復制
?7說明/提示
n ≤ 2 × 109
NOIP 2012 普及組 第一題
02思路第一眼閱讀完題目會感覺這個題很復雜,不但要判斷質因數,還要應付龐大的數據范圍。
質因數(素因數或質因子)在數論里是指能整除給定正整數的質數。除了1以外,兩個沒有其他共同質因子的正整數稱為互質。因為1沒有質因子,1與任何正整數(包括1本身)都是互質。正整數的因數分解可將正整數表示為一連串的質因子相乘,質因子如重復可以用指數表示。根據算術基本定理,任何正整數皆有獨一無二的質因子分解式 [1] 。只有一個質因子的正整數為質數。(百度百科)
但是,用過質因數的定義,我們可以聯想到唯一分解定理。
算術基本定理可表述為:任何一個大于1的自然數 N,如果N不為質數,那么N可以唯一分解成有限個質數的乘積,這里P1
2
3......
n均為質數,其中指數ai是正整數。這樣的分解稱為 N 的標準分解式。(百度百科)
剩下的就簡單了,直接用輸入的數對i(i = 2, 3 ,4 ,5 ,......)求余,倘若余數為0,則n / i 的就是答案。
03Java源代碼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)
逸工作室,帶你學習算法~戳“閱讀原文”我們一起進步總結
以上是生活随笔為你收集整理的java 判断一个数是正整数_【Java】P1075 质因数分解—关于数学方法在解题中的运用—(OJ:洛谷)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: zookeeper版本更新_ZooKee
- 下一篇: python绘制3d动态模型_怎么用py