題目描述
已知正整數n是兩個不同的質數的乘積,試求出較大的那個質數。
輸入描述
輸入只有一行,包含一個正整數n。
輸出描述
輸出只有一行,包含一個正整數p,即較大的那個質數。
樣例輸入1
21
樣例輸出1
7
思路解析:
本身想的是一個挺簡單的方法,Python倒序循環一下,然後判斷一下是不是質數,最後直接輸出就可以了;But 麻煩就在這兒,因爲時間規定的是1s,前面的樣例都順利過了,到最後顯示TLE,沒辦法,只能最後修改複雜度,但是發現O(n^2)已經是最簡單的了,所以就忍不住看了看題解發現,數學知識很重要,轉換一下就可以了,同時輸入的就是一個兩個質數的乘積,所以不用再判斷是否是質數就可以輸出了,但是關鍵是要正序循環,然後輸出的時候轉換爲相對的質因數
代碼如下:先貼一個不能A的
#C0210 [2012普及組-A]質因數分解.py
#這個方法成功的出現了TLE
def isPrime(i):
for j in range(2,j**0.5):
if i % j == 0:
return False
else:
return True
n = eval(input())
for i in range(n,1,-1): #Python倒序循環
if n % i == 0:
if isPrime:
print(i)
break
下面是一個A的
#C0210 [2012普及組-A]質因數分解.py
n = eval(input())
p = 0
for i in range(2,n):
if n % i == 0:
p = n // i #轉換,不能直接輸出,不然還是會TLE
print(p)
break