【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

 

上一篇:[转帖]Linux日期和时间的那些事儿


下一篇:NOip 2012 摆花