【Python】 Comet OJ C0210 [2012普及組-A]質因數分解

題目描述

已知正整數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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章