ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

【Python】 Comet OJ C0210 [2012普及组-A]质因数分解

2019-09-07 12:06:34  阅读:246  来源: 互联网

标签:输出 因数分解 Python 质数 样例 OJ C0210 2012


题目描述

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

 

标签:输出,因数分解,Python,质数,样例,OJ,C0210,2012
来源: https://blog.csdn.net/huitinfeng/article/details/100592774

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有