题目描述
已知正整数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